[fli4l] "date" akzeptiert dokumentierte Zeit-Formate nicht

Christoph Schulz fli4l at kristov.de
Mo Mär 26 21:25:47 CEST 2012


Hallo!

Am 25.03.2012 23:18, schrieb Hans Bachner:
 > Hallo,
 >
 > ich habe heute wieder einmal mit einer 3.6.1 Konfiguration herumgespielt
 > und dabei auch das in s.f.o schon besprochene Problem mit der
 > Interpretation der Timezone-Rule festgestellt. Dem wollte ich allerdings
 > nicht im Detail nachgehen (war nur ein Test-Setup), aber doch die
 > Uhrzeit korrigieren - mit dem "date" Befehl der Busybox.
 > [...]
 > flitest2 3.6.1 # date 201203251959
 > Fri Aug 12 03:25:00 MESZ 1960
 > flitest2 3.6.1 #
 >
 > Hoppla - das wurde offenbar als MMDDhhmmYYYY interpretiert - und aus dem
 > 20. Monat im Jahr 1959 nicht unlogisch der 8. Monat 1960 gemacht.

Lustigerweise funktioniert es, wenn man die "-d"-Option oder die 
"-s"-Option nutzt:

garm 3.7.0-rev21150 # date 201203262018
Mon Aug 12 03:26:00 MESZ 2019
garm 3.7.0-rev21150 # date -s 201203262018
Mon Mar 26 20:18:00 MEZ 2012
garm 3.7.0-rev21150 # date -d 201203262018
Mon Mar 26 20:18:00 MEZ 2012
garm 3.7.0-rev21150 #

Die Implementierung ist korrekt, die Dokumentation ungenau. Die 
Dokumentation von coreutils ist da besser: Wenn "date <Datum>" verwendet 
wird, wird genau ein Format akzeptiert:

MMDDhhmm[[CC]YY][.ss]

Nur wenn -d oder -s angegeben ist, werden diverse andere Format erkannt 
und verarbeitet.

Nun mag man darüber streiten, ob es sich um einen "schlimmen" Fehler 
handelt, weil Busybox nun mal auf Größe optimiert ist und dies nun mal 
leider auch die Hilfetexte betrifft. Für die Zukunft gilt: Beim Setzen 
sollte man die "-s"-Option verwenden!


Viele Grüße,

Christoph


Mehr Informationen über die Mailingliste Fli4L