Le changement de règle d’heure avancée a-t-il invalidé la bibliothèque d’exécution C?

StackOverflow https://stackoverflow.com/questions/275952

  •  07-07-2019
  •  | 
  •  

Question

Il y a quelque temps, j'ai mis en place une bibliothèque time qui pourrait être utilisée pour calculer des temps relatifs en un an pour quelqu'un. J'ai remarqué à l'époque que le décalage d'une heure avait été effectué dans les deux sens pour garantir l'heure avancée. Je viens de penser que le Congrès a modifié les règles de l'heure d'été . Je ne me souviens pas d'avoir vu d'informations sur les mises à jour pour résoudre le changement d'algorithme. Quelqu'un at-il des informations sur ce sujet?

Était-ce utile?

La solution

La plupart des systèmes de type Unix utilisent la base de données Olson tz pour leurs informations de fuseau horaire:

http://www.twinsun.com/tz/tz-link.htm

Les modifications apportées aux règles de fuseau horaire des États-Unis ont été implémentées dans la version 2005l de la base de données tz.

Autres conseils

Pour Visual Studio 2005 et versions antérieures, Microsoft a publié des versions mises à jour des bibliothèques d'exécution C. Vous trouverez plus d’informations sur ici .

Sur quelle plateforme travaillez-vous?

Étant donné que le Congrès ne fixe pas les règles pour le monde entier :), il existe un mécanisme permettant de spécifier de manière flexible les règles sur Unix / Linux depuis longtemps

Voir, par exemple, http://www.manpagez.com/man/8 / zic / pour le format des fichiers. Votre système particulier peut avoir besoin d'une définition mise à jour pour les nouvelles règles (si la distribution ne l'a pas déjà traitée)

Pour Windows, MS crée des règles et publie des mises à jour lorsque les choses changent.

Pour les MacO, je n’en ai aucune idée, mais j’imagine qu’il hérite de la façon de faire Unix.

Mais dans tous ces cas, aucune modification de la bibliothèque C ne devrait être nécessaire

Sur une note plus générale, le moteur d’exécution C utilise des fichiers de données internes pour établir une correspondance entre la représentation temporelle interne et les paramètres régionaux de l’utilisateur. Ces mappages sont mis à jour régulièrement par les fournisseurs respectifs pour correspondre à la législation en vigueur.

Etant donné que les horloges internes doivent être réglées sur UTC, l’heure avancée d’été n’est qu’une question de changement de fuseau horaire. Par exemple, le 26 octobre, chez moi, mon Mac est passé de CEST (heure d'été d'Europe centrale) à «normal» CET (heure d'Europe centrale). L'affichage de mon horloge a changé, mais pas celui de l'ordinateur.

http://www.timeanddate.com/library/abbreviations /timezones/eu/cest.html

En effet, cela signifie que vous devez absolument conserver vos variables de date / heure au format UTC ou dans un format natif prenant en compte le fuseau horaire. C’est pourquoi il suffit d’enregistrer la date et l’heure en tant que " AAAAMMJJHHMMSS " chaîne, est un bug en attente pour se produire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top