Ответ 1
Следующая команда работает с последними версиями GNU date
:
date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S"
У меня есть следующее в оболочке script. Как я могу вычитать один час, сохраняя форматирование?
DATE=`date "+%m/%d/%Y -%H:%M:%S"`
Следующая команда работает с последними версиями GNU date
:
date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S"
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
если вам нужна выдержка с меткой времени:
timestamp=$(date +%s -d '1 hour ago');
Преобразовать в timestamp (длинное целое число), вычесть правильное количество миллисекунд, переформатировать в нужный формат.
Сложно дать больше информации, так как вы не указали язык программирования...
Эта работа над моим Ubuntu 16.04 date
:
date --date="@$(($(date +%s) - 3600))" "+%m/%d/%Y -%H:%M:%S"
И date
версия date (GNU coreutils) 8.25
Если вам нужно изменить часовой пояс до вычитания с новым форматом тоже:
$(TZ=US/Eastern date -d '1 hour ago' '+%Y-%m-%d %H:%M')
Здесь еще один способ вычесть 1 час.
yesterdayDate='date -d '2018-11-24 00:09 -1 hour' +'%Y-%m-%d %H:%M''
echo $yesterdayDate
Output:
2018-11-23 23:09
Я надеюсь, что это может помочь кому-то. С уважением!
$ 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