Hoy mi reloj se ajustó automáticamente al horario de verano, y un script de un crontab comenzó a fallar. Eché un vistazo a lo que estaba sucediendo y se mostró el siguiente error, con LC_ALL=C
:
fecha: fecha no válida '2016-10-16'
Pensé que sería mejor reiniciar el sistema, pero ahora lo he reiniciado y el error sigue apareciendo:
$ 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
¿Qué podría estar causando esto?
locale
s diferentes :sv_SE.utf8
yen_us.utf-8
.Respuestas:
El problema es que el horario de verano cambió y se envió 1 hora, el 16 de octubre de 2016 en su zona horaria:
Por lo tanto, cualquier momento entre ese día
00:00
y00:59
el día se considera inválido en su zona horaria (pero puede ser válido en otros):Puede establecer tiempo adicional, que no está en ese rango:
Lo anterior es el comportamiento de la fecha GNU.
La fecha BSD no tiene este problema. Si la fecha de entrada no es válida en la zona horaria, se ajustará silenciosamente hacia adelante 1 hora hasta que alcance una hora válida:
fuente