Mon application convertit les dates passées et présentes de l'heure locale à l'heure UTC.Conversion d'anciennes et de nouvelles heures locales en UTC sous Windows XP/Server 2003
Je dois m'assurer que je vais honorer toutes les futures mises à jour DST pour Windows tout en gérant correctement les dates antérieures.
L'application est écrit en C++ et est en cours d'exécution sur le serveur 2003.
Options J'ai fait des recherches:
gmtime()
andlocaltime()
are not always correct for past dates parce qu'ils ne jamais respecter les règles de l'heure d'été en vigueur. (related SO question)Un tz database est hors service car il nécessite une mise à jour manuelle séparée.
GetTimeZoneInformationForYear()
est parce qu'il nécessite Vista/Server 2008.Past DST information is stored in the registry, mais je suis à la recherche de quelque chose de plus haut niveau.
Boost
date_time
:- classe
us_dst_rules
est dépréciée et ne met pas à jour si les mises à jour du système d'exploitation. - la classe
dst_calc_engine<>
est son successeur, mais elle ne respecte pas non plus les mises à jour du système d'exploitation.
- classe
Alors ...
... est toute autre personne utilisant la solution de registre brut pour le faire?
... d'autres suggestions?
(edit: a découvert dst_calc_engine
doesn't support DST updates)
J'aime l'idée de le ré-implémenter avec une signature identique au remplacement de sorte que l'API native puisse être un remplacement direct quand nous passerons à Server 2008. – mskfisher
Il y a (au moins :) un risque associé à cette stratégie, bien que. Ces deux fonctions sont assez nouvelles - si des bogues y sont trouvés, et ils sont mis à jour avec les données de fuseau horaire dans un nouveau format, vos fonctions pourraient être brisées. Cela ne semble pas très probable, mais c'est toujours un risque lorsqu'on utilise des données «sous-API», comme le support du registre pour les informations de fuseau horaire. –
@ KimGräsman Avez-vous publié votre solution quelque part? – kol