Dzisiaj mój zegar został automatycznie dostosowany do czasu letniego i skrypt z crontab zaczął zawodzić. Spojrzałem na to, co się dzieje, i wyświetlił się następujący błąd LC_ALL=C
:
data: nieprawidłowa data „2016-10-16”
Myślałem, że najlepiej będzie zrestartować system, ale teraz uruchomiłem ponownie, a błąd nadal pojawia się:
$ 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
Co może być tego przyczyną?
locale
s:sv_SE.utf8
ien_us.utf-8
.Odpowiedzi:
Problemem jest zmiana czasu letniego i zmiana 1 godziny, 16 października 2016 r. W strefie czasowej:
Tak więc każda chwila od
00:00
do00:59
tego dnia jest uważana za niepoprawną w strefie czasowej (ale może ważna w innych):Możesz ustawić dodatkowy czas, który nie mieści się w tym zakresie:
Powyżej jest zachowanie daty GNU.
Data BSD nie ma tego problemu. Jeśli wprowadzona data jest niepoprawna w strefie czasowej, zostanie ona cicho dostosowana do przodu o 1 godzinę, aż osiągnie prawidłowy czas:
źródło