Странное поведение даты в bash - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь добавить часы к определенной дате в bash и это дает странные результаты

Это просто для проверки правильности парсинга даты и времени

$ date -d "2020-01-21 12:00:00"

Вт 21 января 12:00:00 UT C 2020

Теперь, когда я пытаюсь сделать дату математика

$ date -d "2020-01-21 12:00:00 +2 hour"

Вт 21 Янв 11:00:00 UT C 2020

Я пробовал несколько других операций, но подобное поведение.

Если я изменю свой формат, тогда он ведет себя правильно, например.

date -d "12:00:00 2020-01-21 +2 hour"

вт 21 января 14:00:00 UT C 2020

не уверен, что здесь происходит.

Ответы [ 2 ]

3 голосов
/ 23 января 2020

+2 интерпретируется как явный спецификатор часового пояса (эквивалент EET), поэтому date -d "2020-01-21 12:00:00 +2 hour" интерпретируется так же, как date -d "2020-01-21 12:00:00 EET hour", что добавляет один час к времени, скорректированному по часовому поясу указано.

Вы можете либо указать явный часовой пояс (как рекомендует Maaz), так что +2 hour является синтаксически дополнительным смещением, либо вы можете переместить его в начало выражения, где он не может быть проанализирован как часовой пояс.

date -d "+ 2 hour 2020-01-21 12:00:00"
1 голос
/ 23 января 2020

Обычно вам нужно передать часовой пояс в команде, а также UTC / CT / IST, чтобы команда date могла понять точку отсчета, чтобы добавить дополнительные часы.

Например, если вы находитесь в UT C часовой пояс, тогда следующий будет производить правильный вывод для вас.

date -d "2020-01-21 12:00:00 UTC + 2 hour"
...