вычтите 1 час от даты в сценарии оболочки Unix - PullRequest
37 голосов
/ 09 мая 2011

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

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

Ответы [ 8 ]

53 голосов
/ 09 мая 2011

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

date -d '1 hour ago' "+%m/%d/%Y -%H:%M:%S"
8 голосов
/ 10 мая 2011
date -v-60M "+%m/%d/%Y -%H:%M:%S"

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

Если у вас версия bash 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 - вычитание 1 часа в секундах. Печать:

current date: 04/20/2017 -18:14:31
date - 60min: 04/20/2017 -17:14:31
4 голосов
/ 04 декабря 2015

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

timestamp=$(date +%s -d '1 hour ago');
2 голосов
/ 09 мая 2011

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

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

1 голос
/ 24 мая 2018

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

$(TZ=US/Eastern date -d '1 hour ago' '+%Y-%m-%d %H:%M')
1 голос
/ 21 марта 2017

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

0 голосов
/ 09 апреля 2019

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

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

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

0 голосов
/ 25 ноября 2018

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

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

Output:
2018-11-23 23:09

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...