Hoje, meu relógio foi ajustado automaticamente para o horário de verão e um script de um crontab começou a falhar. Eu dei uma olhada no que estava acontecendo e o seguinte erro estava sendo exibido com LC_ALL=C
:
data: data inválida '16/10/2016'
Eu pensei que seria melhor apenas reiniciar o sistema, mas agora eu reiniciei, e o erro ainda aparece:
$ 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
O que poderia estar causando isso?
locale
s diferentes :sv_SE.utf8
een_us.utf-8
.Respostas:
O problema é que o horário de verão foi alterado e encaminhado 1 hora, em 16 de outubro de 2016, no seu fuso horário:
Assim, qualquer tempo entre
00:00
a00:59
nesse dia é considerado inválido em seu fuso horário (mas talvez válida em outros):Você pode definir um tempo adicional, que não está nesse intervalo:
O acima é comportamento de data do GNU.
A data do BSD não tem esse problema. Se a data de entrada for inválida no fuso horário, ela será ajustada silenciosamente por 1 hora até atingir um tempo válido:
fonte