Функция даты Linux вперед / назад по времени

#linux #shell #date

#linux #оболочка #Дата

Вопрос:

Есть ли опция функции даты?

Как мне заставить LOAD_TEST_START быть на 2 минуты вперед?

Как мне вернуть LOAD_TEST_END на 2 минуты назад?

 LOAD_TEST_START=$(date -u  %FT%TZ)
LOAD_TEST_END=$(date -u  %FT%TZ)
 

Комментарии:

1. Получите эпоху в секундах, добавьте / вычтите 120 секунд, а затем используйте команду date для установки этих переменных.

Ответ №1:

Этот ответ помог мне и работает на linux-версии date .

 LOAD_TEST_START=$(date  %FT%TZ -d "2 minutes ago")
LOAD_TEST_END=$(date  %FT%TZ -d "2 minutes")
 

На macos / FreeBSD можно использовать

 LOAD_TEST_START=$(date -v 2M  %FT%TZ)
LOAD_TEST_END=$(date -v-2M  %FT%TZ)
 

Комментарии:

1. Я получил сообщение об ошибке в модуле, но предложенная вами команда работает на моем терминале MAC $ LOAD_TEST_START=$(date -v 1M % FT% TZ) дата: недопустимый параметр — ‘v’. Версия ядра: 5.4.89 Операционная система: Alpine Linux v3.13 (контейнерный) Тип: linux Архитектура: x86_64

2. Простите, я виноват. Я обновлю ответ.

Ответ №2:

Не уверен, что это то, что вы хотите, но вы можете получить текущее значение эпохи, а затем добавить / вычесть из него 120 секунд (2 минуты) и преобразовать результаты обратно в дату.

 dateval=`date  %s`
echo "orig "`date -d @$dateval  %FT%T%Z`

start=`expr $dateval   120`
end=`expr $dateval - 120`

LOAD_TEST_START=`date -d @$start  %FT%T%Z`
LOAD_TEST_END=`date -d @$end  %FT%T%Z`

echo "start "$LOAD_TEST_START
echo "end "$LOAD_TEST_END