Thread Variable _ ? (52 answers)
Opened by bianca at 2020-12-25 10:24

haj
 2021-01-07 14:24
#193090 #193090
User since
2015-01-07
558 Artikel
BenutzerIn

user image
2021-01-07T08:06:30 bianca
2021-01-05T11:53:52 haj
Wenn Du ein System hast, bei dem Du die Systemzeit ändern kannst, dann schreibe ein Programm, das alle halbe Stunde eine Datei mit fortlaufend nummerierten Dateinamen erstellt und lasse das während der Zeitumstellung von Sommerzeit auf Winterzeit laufen - und dann prüfe, was stat Dir für die Liste liefert.[...]
Warum muss ich dafür die Systemzeit änderbar haben? Wie ich diesen Test verstehe ändert er die Zeit nicht sondern schreibt nur Dateien?
Ja, der Test schreibt Dateien. Aber dabei erzeugt das System die Zeitstempel, die Du mit stat abfragen kannst, auch ohne während der Tests wach zu sein. Wenn alles richtig läuft, dann sollten die Zeitstempel sauber aufsteigend sein. Der Windows-Fehler in den C-Bibliotheken, sorgt(e) dafür, dass es beim Übergang zur Sommerzeit einen "Sprung" in den Zeitstempeln gibt. CPAN:Win32::UTCFileTime "korrigiert" das. Auf Systemen, die bei stat korrekte, d.h. auf UTC basierende Werte liefern, macht das Modul aus richtigen Zeitstempeln falsche. Wenn Du das vor der Sommerzeit-Umstellung testen willst, dann musst Du die Systemzeit umstellen.

2021-01-07T08:06:30 bianca
Jetzt sehe ich das Missverständnis!
localtime hat auch ein Flag!
Genau. Und in Deinem Testprogramm hast Du localtime benutzt.

2021-01-07T08:06:30 bianca
2021-01-05T11:53:52 haj
Meines Wissens war letzte System, in dem diese Information nicht verfügbar war, Perl 5.004 auf MS-DOS.

Was meinst du hiermit?
Damit meine ich, dass der Wert -1 bei CPAN:Date::Calc::Localtime anno 2021 nicht mehr auftreten dürfte, und Perls eingebautes localtime mindestens seit Version 5.8.8 davon ausgeht, dass der Wert verfügbar ist.

2021-01-07T08:06:30 bianca
[...] (richtig ist für mich die Uhrzeit, die am Wirkungsort des Scripts ist)
Da haben wir dann auch unterschiedliche Meinungen. Richtig ist für mich vor allem, die zeitliche Abfolge von Dateien richtig hinzukriegen, und das geht nur, wenn alle die gleiche Zeitbasis haben und es keine "Sprünge in die Vergangenheit" gibt.

2021-01-07T08:06:30 bianca
2021-01-05T11:53:52 haj
Ansonsten: Wo immer möglich, localtime durch gmtime ersetzen.

Neee lieber nicht. Das hatte ich schon ganz am Anfang ausgeschlossen, weil damit gar nichts mehr passt. Ich verstehe aber, worauf du hinaus willst. Sommerzeit als Fehlerquelle ausschließen durch Ignorieren. Darüber denke ich tatsächlich nach aber ich weiß noch nicht, welche Querschläger das verursacht.
Sommerzeit als Fehlerquelle ausschliessen, genau. Das hat aber mit "Ignorieren" nichts zu tun. Ich stimme raubtier zu:
Quote
Sobald man mir irgendwas anderem als UTC rechnet, ist man in der Hölle.
Wenn Du aus dieser Hölle rauswillst, solltest Du danach streben, localtime zu eliminieren.

View full thread Variable _ ?