Aujourd'hui, mon horloge a été automatiquement ajustée à l'heure d'été et un script d'une crontab a commencé à échouer. J'ai jeté un œil à ce qui se passait et l'erreur suivante était affichée avec LC_ALL=C
:
date: date invalide '2016-10-16'
Je pensais qu'il serait préférable de redémarrer le système, mais maintenant je l'ai redémarré et l'erreur persiste:
$ 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'est-ce qui peut causer cela?
locale
s différents :sv_SE.utf8
eten_us.utf-8
.Réponses:
Le problème est que l'heure d'été a été modifiée et transmise 1 heure le 16 octobre 2016 dans votre fuseau horaire:
Donc , en tout temps entre
00:00
à00:59
ce jour - là est considérée comme non valide dans votre fuseau horaire (mais peut - être valable dans d' autres):Vous pouvez définir du temps supplémentaire, qui ne se situe pas dans cette plage:
Ce qui précède est le comportement de la date GNU.
La date BSD n'a pas ce problème. Si la date saisie est invalide dans le fuseau horaire, elle sera ajustée en mode silencieux 1 heure jusqu'à ce qu'elle atteigne une heure valide:
la source