Подтвердить что ты не робот

Вычесть 1 час с даты в оболочке unix script

У меня есть следующее в оболочке script. Как я могу вычитать один час, сохраняя форматирование?

DATE=`date "+%m/%d/%Y -%H:%M:%S"`
4b9b3361

Ответ 1

Следующая команда работает с последними версиями GNU date:

date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S"

Ответ 2

date -v-60M "+%m/%d/%Y -%H:%M:%S"

DATE=`date -v-60M "+%m/%d/%Y -%H:%M:%S"`

Если у вас есть bash version 4.4+, вы можете использовать bash печать даты и арифметики:

printf "current date: %(%m/%d/%Y -%H:%M:%S)T\n"
printf "date - 60min: %(%m/%d/%Y -%H:%M:%S)T\n" $(( $(printf "%(%s)T") - 60 * 60 ))

$(printf "%(%s)T") печатает секунды эпохи, $(( epoch - 60*60 )) - bash -aritmetics - вычитает 1 час в секундах. Печать:

current date: 04/20/2017 -18:14:31
date - 60min: 04/20/2017 -17:14:31

Ответ 3

если вам нужна выдержка с меткой времени:

timestamp=$(date +%s -d '1 hour ago');

Ответ 4

Преобразовать в timestamp (длинное целое число), вычесть правильное количество миллисекунд, переформатировать в нужный формат.

Сложно дать больше информации, так как вы не указали язык программирования...

Ответ 5

Эта работа над моим Ubuntu 16.04 date: date --date="@$(($(date +%s) - 3600))" "+%m/%d/%Y -%H:%M:%S" И date версия date (GNU coreutils) 8.25

Ответ 6

Если вам нужно изменить часовой пояс до вычитания с новым форматом тоже:

$(TZ=US/Eastern date -d '1 hour ago' '+%Y-%m-%d %H:%M')

Ответ 7

Здесь еще один способ вычесть 1 час.

yesterdayDate='date -d '2018-11-24 00:09 -1 hour' +'%Y-%m-%d %H:%M'' 
echo $yesterdayDate

Output:
2018-11-23 23:09

Я надеюсь, что это может помочь кому-то. С уважением!

Ответ 8

$ date +% Y-% m -% d-% H Выход: 2019-04-09-20

$ date -v-1H +% Y-% m -% d-% H Выход: 2019-04-09-19

Но в скорлупе используйте как date +%Y-%m-%d-%H, date -v-1H +%Y-%m-%d-%H