Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdSNTP liefert immer (noch) Sommerzeit (https://www.delphipraxis.net/213964-tidsntp-liefert-immer-noch-sommerzeit.html)

Bbommel 30. Okt 2023 12:43

AW: TIdSNTP liefert immer (noch) Sommerzeit
 
Zitat:

Zitat von omnibrain (Beitrag 1528731)
Ich benutze die Komponente "TIdSNTP", teil von Indy.

Letzte Woche habe ich die "korrekte" Zeit, also wenn um 11:10 abgefragt habe kam 11:10 als Antwort.
Heute kommt bei der Abfrage um 11:10 stattdessen 12:10 als Antwort.

Die Komponente konvertiert das selbst. Viel zu konfigurieren habe ich da auch nicht gefunden.

Falls es dich beruhigt: ab morgen funktioniert alles wieder! ;-)

Ich war mal neugierig. Das ist ein Fehler in Indy, und zwar in der Funktion TIdSNTP.NTPToDateTime in der Unit IdSNTP. Die ist dafür verantwortlich, die Bytes, die vom NTP-Server kommen, wieder in ein Delphi-Datum umzuwandeln.

Am Ende dieser Funktion steht folgendes:
Delphi-Quellcode:
  Value2 := Trunc(Value2 / NTPMaxInt * 1000) / 1000;
  Result := UTCTimeToLocalTime((Value1 + Value2) / 86400) + 2;
Zu Deutsch: das Datum, das sich aus der Umrechnung von Value1 und Value2 ergibt, liegt zwei Tage vor dem Delphi-Datum. Die Basis scheint also der 1.1.1900 zu sein und nicht wie beim Delphi-Format der 30.12.1899. Also muss man am Ende noch zwei Tage addieren, um auf das korrekte Delphi-Datum zu kommen, siehe die "+ 2" am Ende. Diese Addition wird aber erst NACH der Zeitzonen-Umrechnung gemacht. Das heißt, die Zeitzonen-Umrechnung erfolgt heute mit dem 28.10.2023 und nicht dem 30.10.2023. Daher geht die Umrechnung noch von Sommerzeit aus und addiert zwei Stunden und nicht eine.

Vielleicht kennt sich ja jemand mit Indy aus und kann das an der passenden Stelle als Bug einreichen.

Bbommel 30. Okt 2023 12:51

AW: TIdSNTP liefert immer (noch) Sommerzeit
 
Nachtrag: Hier ist das schon gefixt: https://github.com/IndySockets/Indy/...ols/IdSNTP.pas

Ich bin mal optimistisch, dass das zumindest im nächsten Delphi auch gefixt ist. In D11.2 muss man das wohl selber korrigieren.

bernau 30. Okt 2023 12:55

AW: TIdSNTP liefert immer (noch) Sommerzeit
 
Zitat:

Zitat von omnibrain (Beitrag 1528720)
Ich nutze Delphi 11.2 (Patch 1) unter Windows 11 (22H2):

In unsere Software habe ich vor wenigen Wochen einen Check eingebaut um gegen einen Zeitserver unabhängig vom Rest des Systems gegen einen Zeitserver checken zu können, da unsere Kunden in der Vergangenheit Probleme mit der netzwerkinternen Zeitsynchronisation hatten.
Seit Sonntag haben wir "plötzlich" ein Stunde Abweichung.

Bei mir das Gleiche. Verwende auch die Komponente. Hatte schon mal den Fehler, der verschwindet nach 1-2 Tagen wieder.

omnibrain 30. Okt 2023 12:57

AW: TIdSNTP liefert immer (noch) Sommerzeit
 
Ja, habe es durch Hinweis in der englischen DP auch gefunden. https://github.com/IndySockets/Indy/issues/386
Ich wusste nicht, dass Indy auf GitHub ist und habe es beim Googlen auch nicht gefunden.
Dann hoffe ich mal, dass der Fix im Delphi 12 dabei ist.

Uwe Raabe 30. Okt 2023 13:08

AW: TIdSNTP liefert immer (noch) Sommerzeit
 
Delphi 12 kommt mit einer Indy-Version aus September 2023, also schon ziemlich aktuell.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz