Funktion Now und Zeitumstellung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
AlterPascaler
Beiträge: 88
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Funktion Now und Zeitumstellung

Beitrag von AlterPascaler »

Hallo zusammen,

bei meinen Apps, die nonstop laufen, ist mir bei der Sommerzeit- Umstellung aufgefallen, das Now den Wert eine Stunde zurück liefert. Erste nach einem Neustart der Apps, stimmte die Zeit wieder. Das Betriebssystem (Linux) hatte die richtige Sommerzeit.
Betriebssystem ist ein Debian-Derivate.

Hat da jemand eine Idee oder ein workaround?

Viele Grüße
AP
Viele Grüße
AlterPascaler

Stevie
Beiträge: 173
Registriert: Di 27. Feb 2024, 22:40

Re: Funktion Now und Zeitumstellung

Beitrag von Stevie »

Vielleicht hilft Dir der Kommentar unter https://www.freepascal.org/docs-html/rt ... ffset.html :
Note that on Linux/Unix, the information returned from the TDateTime-unaware function may be inaccurate around the DST time changes (for optimization). In that case, the unix.ReReadLocalTime unit must be used to re-initialize the timezone information.
Und auf der Seite von ReReadTime unter https://www.freepascal.org/docs-html/rt ... ltime.html steht dann:
ReReadLocalTime can be used to re-initialize the local timezone information.

To speed up conversion of epoch (UTC) time to local time, the timezone information is loaded only once, at program startup. Calling this routine re-reads the timezone information using current timezone settings.
Fazit: Vielleicht hängst Du mal ein ReReadTime() vor Deine Zeitabfrage, drehst Deine Uhr zurück auf vor der Zeitumstellung und schaust mal, ob es dann besser klappt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6857
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Funktion Now und Zeitumstellung

Beitrag von af0815 »

Stevie hat geschrieben: Mo 22. Apr 2024, 18:45 Fazit: Vielleicht hängst Du mal ein ReReadTime() vor Deine Zeitabfrage, drehst Deine Uhr zurück auf vor der Zeitumstellung und schaust mal, ob es dann besser klappt.
ReReadTime rufe ich nicht zu häufig ab, weil es unnötig ist und nur unnötige Systemlast verursacht. Wenn man es einmal in der Stunde macht ist es auch ok. Weil die Zeitumstellung ist ja nicht so häufig :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
AlterPascaler
Beiträge: 88
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: Funktion Now und Zeitumstellung

Beitrag von AlterPascaler »

Danke,
Ich probiere es aus.
Viele Grüße
AlterPascaler

Mathias
Beiträge: 6967
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Funktion Now und Zeitumstellung

Beitrag von Mathias »

bei meinen Apps, die nonstop laufen, ist mir bei der Sommerzeit- Umstellung aufgefallen, das Now den Wert eine Stunde zurück liefert.
Am besten mal diese Umschaltrrei abschaffen. Mensch, Natur und auch PC haben nur Probleme mit diesem Mist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
AlterPascaler
Beiträge: 88
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: Funktion Now und Zeitumstellung

Beitrag von AlterPascaler »

Ist auch eine gute Idee, aber solange kann ich nicht warten. Versucht die EU ja schon einige Jahre. Wobei ich die Bedenken von Spanien verstehen kann. Vielleicht muss man wieder Zeitzonen einführen. Aber wie schön gesagt, soviel Zeit habe ich nicht.
Viele Grüße
AlterPascaler

Benutzeravatar
AlterPascaler
Beiträge: 88
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: Funktion Now und Zeitumstellung

Beitrag von AlterPascaler »

Update:
Mit ReReadLocalTime() funktioniert das. Implementiert habe ich das so, das zum Zeitpunkt der Zeitumstellung plus 10 Sekunden die Procedure ReReadLocalTime() aufgerufen wird, also zweimal im Jahr.

Gruß an alle Pascaler.
Viele Grüße
AlterPascaler

Antworten