Сегодня мои часы были автоматически переведены на летнее время, и скрипт из crontab начал давать сбои. Я посмотрел на то, что происходило, и отображалась следующая ошибка LC_ALL=C
:
дата: недействительная дата '2016-10-16'
Я, хотя было бы лучше просто перезагрузить систему, но теперь я перезагрузил, и ошибка все еще появляется:
$ date -d '2016-10-15'
Sat Oct 15 00:00:00 BRT 2016
$ date -d '2016-10-16'
date: data inválida “2016-10-16”
$ date -d '2016-10-17'
Mon Oct 17 00:00:00 BRST 2016
Что может быть причиной этого?
locale
s:sv_SE.utf8
иen_us.utf-8
.Ответы:
Проблема в том, что летнее время изменилось и перешло 1 час 16 октября 2016 года в вашем часовом поясе:
Таким образом, любое время между
00:00
в00:59
этот день считается недействительным в вашем часовом поясе (но может быть допустимым в других):Вы можете установить дополнительное время, которое не находится в этом диапазоне:
Выше приведено поведение даты GNU.
Дата BSD не имеет этой проблемы. Если введенная дата недействительна в часовом поясе, она будет бесшумно скорректирована на 1 час до достижения действительного времени:
источник