Ich habe einige Lazarus-Programme auf dem Raspberry unter Jessie laufen. Die schreiben Ereignisse mit Zeitstempel in Logfiles.
Vor einigen Tagen war nun Zeitumstellung. Die Zeit der Raspi-Uhr wurde richtig umgestellt, wie ich mit "date" in der Konsole auch überprüfen konnte. Die Programme haben aber immer noch die "alte" Zeit geloggt, mit einer Stunde Unterschied.
Erst nach Anhalten und Neustart haben die Programme dann die richtige Zeit geloggt. Das sah dann so aus:
26.03.17 18:41:50 - Beende HC Data
26.03.17 19:41:53 - Starte HC Data <= Neustart nach 3 Sekunden
Ich frage die Zeit mit "Now" ab und formatiere sie mit FormatDateTime.
Code: Alles auswählen
FormatDateTime('dd.mm.yy hh:nn:ss', Now)
Wenn ich die Beiträge richtig verstanden habe, liegt es daran, dass die Zeitzonen-Einstellung nur bei Programmstart abgefragt wird, und "Now" dann immer diese Einstellung verwendet. Man müsste regelmäßig "GetLocalTimezone" aufrufen, um eine Aktualisierung zu erzwingen (http://forum.lazarus.freepascal.org/ind ... 970.0.html).
Warum ist das so umständlich? Warum wird nicht einfach die Systemzeit abgefragt, wie sie auch "date" in der Konsole liefert?
Ist die Lösung mit "GetLocalTimezone" korrekt, oder gibt es noch eine bessere Lösung, bei dauernd laufenden Programmen richtig auf die Zeitumstellung zu reagieren?
Sollte sowas nicht in der Hilfe erwähnt werden? Das merkt man doch bestenfalls durch Zufall, und dann hat man vielleicht monatelang falsche Daten geloggt.
Im englischen Forum scheint das Thema nicht so interessant zu sein. Ist halt so, nimmt man hin.