On Sam, 04 Aug 2001, Bernd Brodesser wrote:
* David Haller schrieb am 04.Aug.2001:
Unix wird erst am Son 09.09.2001 03:46:18 CEST eine Milliarde Sekunden alt...
Interessante Zeit, wie kommst Du darauf?
Mittels meinem script: ,----[ ~/bin/epochtodate ] | #!/usr/bin/perl -w | use POSIX qw(strftime); | | if ($ARGV[0]) { | $secs=$ARGV[0]; | } else { | $secs=time(); | } | | $date = strftime "%a %d.%m.%Y %H:%M:%S %Z", localtime($secs); | print "$date\n"; `---- $ epochtodate 1000000000 Sun 09.09.2001 03:46:18 CEST
Das Datum habe ich auch, auch die Stunde und Minute, nur die Sekunden habe ich anders:
$ date --date "1970-1-1 1:00" +%s 0 $ date --date "1970-1-1 1:00 1000000000sec" Son Sep 9 03:46:40 CEST 2001
18 kann ja auch nicht sein, denn wie sollte da als letzte Stelle eine 8 anstelle einer 0 auftreten.
Aber Halt, da gibt es ja noch Schaltsekunden. Wenn es seit 1970 22 Schaltsekunden gegeben hat, hättest Du Recht. 22 Sekunden in 31 Jahren erscheint mir aber etwas viel, könnte aber stimmen. Wieso aber zeigt das mein Linux nicht an? Ist Linux also doch Mist?
Nein. Im Gegentum! :)
Die GNU libc (und somit Linux) ist da einfach _sehr_ genau!
(Leerzeilen zur besseren Lesbarkeit)
$ echo $TZ
:right/Europe/Berlin
$ TZ="Europe/Berlin" epochtodate 1000000000
Son 09.09.2001 03:46:40 CEST
$ TZ=":right/Europe/Berlin" epochtodate 1000000000
Sun 09.09.2001 03:46:18 CEST
$ TZ="UTC" epochtodate 1000000000
Sun 09.09.2001 01:46:40 UTC
$ TZ=":right/UTC" epochtodate 1000000000
Sun 09.09.2001 01:46:18 UTC
$ /usr/sbin/zdump -v "UTC" | wc -l
4
$ /usr/sbin/zdump -v ":right/UTC" | wc -l
48
$ echo $[(48-4)/2]
22
$ /usr/sbin/zdump -v "Europe/Berlin" | wc -l
288
$ /usr/sbin/zdump -v ":right/Europe/Berlin" | wc -l
332
$ echo $[(332-288)/2]
22
Da hast du deine 22 Schaltsekunden (warum das /2: siehe die
Ausgabe von zdump -v)...
Und diese 22 Schaltsekunden sind offiziell und korrekt!
Zu dem Thema war vor ner Weile nen Artikel in der FreeX (IIRC),
von Andreas Jaeger