![]() |
AW: TIdSNTP liefert immer (noch) Sommerzeit
Zitat:
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:
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.
Value2 := Trunc(Value2 / NTPMaxInt * 1000) / 1000;
Result := UTCTimeToLocalTime((Value1 + Value2) / 86400) + 2; Vielleicht kennt sich ja jemand mit Indy aus und kann das an der passenden Stelle als Bug einreichen. |
AW: TIdSNTP liefert immer (noch) Sommerzeit
Nachtrag: Hier ist das schon gefixt:
![]() Ich bin mal optimistisch, dass das zumindest im nächsten Delphi auch gefixt ist. In D11.2 muss man das wohl selber korrigieren. |
AW: TIdSNTP liefert immer (noch) Sommerzeit
Zitat:
|
AW: TIdSNTP liefert immer (noch) Sommerzeit
Ja, habe es durch Hinweis in der englischen DP auch gefunden.
![]() 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. |
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. |
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