Meine Anwendung konvertiert vergangene und aktuelle Daten von Ortszeit in UTC.Konvertieren von alten und neuen lokalen Zeiten in UTC unter Windows XP/Server 2003
Ich muss sicherstellen, dass ich zukünftige DST-Updates für Windows berücksichtigen werde, während die vergangenen Daten weiterhin korrekt verarbeitet werden.
Die Anwendung ist in C++ geschrieben und läuft auf Server 2003.
Optionen Ich recherchiert habe:
gmtime()
andlocaltime()
are not always correct for past dates, weil sie immer nur aktuelle DST-Regeln beachten. (related SO question)Ein tz database ist out, weil es eine separate manuelle Aktualisierung erfordert.
GetTimeZoneInformationForYear()
ist, weil es Vista/Server 2008 erfordertPast DST information is stored in the registry, aber ich bin auf der Suche nach etwas höheren Ebene.
Boost-
date_time
:- Klasse
us_dst_rules
ist veraltet und wird nicht aktualisiert, wenn das OS-Updates. - Die Klasse
dst_calc_engine<>
ist ihr Nachfolger, aber sie berücksichtigt auch keine OS-Updates.
- Klasse
So ...
... ist jemand anderes die rohe Registry-Lösung, dies zu tun?
... weitere Vorschläge?
(edit: herausgefunden dst_calc_engine
doesn't support DST updates)
Ich mag die Idee, sie mit einer identischen Signatur zu ersetzen, so dass die native API ein Drop-in-Ersatz sein könnte, wenn wir zu Server 2008 wechseln. – mskfisher
Es gibt (mindestens :) ein Risiko im Zusammenhang mit dieser Strategie. obwohl. Diese zwei Funktionen sind ziemlich neu - wenn Fehler in ihnen gefunden werden, und sie zusammen mit Zeitzonendaten in einem neuen Format aktualisiert werden, könnten Ihre Funktionen unterbrochen werden. Es scheint nicht sehr wahrscheinlich, aber es ist immer ein Risiko bei der Verwendung von "Under-the-API" -Daten, wie die Registry-Unterstützung für die Zeitzone Info. –
@ KimGräsman Haben Sie Ihre Lösung irgendwo veröffentlicht? – kol