Partager via


Vue d’ensemble du fuseau horaire

La TimeZoneInfo classe simplifie la création d’applications prenant en charge les fuseaux horaires. La TimeZone classe prend en charge l’utilisation du fuseau horaire local et du temps universel coordonné (UTC). La TimeZoneInfo classe prend en charge ces deux zones ainsi que tout fuseau horaire sur lequel les informations sont prédéfinies dans le Registre. Vous pouvez également utiliser TimeZoneInfo pour définir des fuseaux horaires personnalisés dont le système n’a pas d’informations.

Éléments essentiels du fuseau horaire

Un fuseau horaire est une région géographique dans laquelle le même temps est utilisé. En règle générale, mais pas toujours, les fuseaux horaires adjacents sont séparés d’une heure. L’heure dans tous les fuseaux horaires du monde peut être exprimée sous la forme d’un décalage par rapport au temps universel coordonné (UTC).

La plupart des fuseaux horaires du monde prennent en charge l’heure d’été. L’heure d’été tente de maximiser les heures de lumière du jour en avançant l'heure d'une heure au printemps ou au début de l'été, et en revenant à l'heure normale (ou standard) à la fin de l'été ou à l'automne. Ces modifications apportées à l’heure standard sont appelées règles d’ajustement.

La transition vers et depuis l’heure d’été dans un fuseau horaire particulier peut être définie par une règle d’ajustement fixe ou flottante. Une règle d’ajustement fixe définit une date particulière à laquelle la transition vers ou depuis l’heure d’été se produit chaque année. Par exemple, une transition entre l’heure d’été et l’heure standard qui se produit chaque année le 25 octobre suit une règle d’ajustement fixe. Beaucoup plus courants sont des règles d’ajustement flottant, qui définissent un jour particulier d’une semaine particulière d’un mois particulier pour la transition vers ou depuis l’heure d’été. Par exemple, une transition de l’heure standard à l’heure d’été qui se produit le troisième dimanche de mars suit une règle d’ajustement flottante.

Pour les fuseaux horaires qui prennent en charge les règles d’ajustement, la transition vers et depuis l’heure d’été crée deux types d’heures anormales : les heures non valides et les heures ambiguës. Une heure non valide est une heure inexistante créée par la transition de l’heure standard à l’heure d’été. Par exemple, si cette transition se produit sur un jour particulier à 2:00 A.M. et provoque la modification de l’heure à 3:00 A.M., chaque intervalle de temps compris entre 2:00 A.M. et 2:59:59 A.M. n’est pas valide. Une heure ambiguë est une heure qui peut être mappée à deux fois différentes dans un fuseau horaire unique. Elle est créée par la transition entre l’heure d’été et l’heure standard. Par exemple, si cette transition se produit un jour particulier à 2 h 00 et que le temps passe à 1 h 00, chaque intervalle de temps compris entre 1 h 00 et 1 h 59 min 59 s peut être interprété comme une heure standard ou une heure d’été.

Terminologie du fuseau horaire

Le tableau suivant définit les termes couramment utilisés lors de l’utilisation des fuseaux horaires et du développement d’applications prenant en charge les fuseaux horaires.

Terme Définition
Règle d’ajustement Règle qui définit quand la transition entre l’heure standard et l’heure d’été et le retour de l’heure d’été à l’heure d’été se produisent. Chaque règle d’ajustement a une date de début et de fin qui définit le moment où la règle est en place (par exemple, la règle d’ajustement est en place du 1er janvier 1986 au 31 décembre 2006), un delta (durée pendant laquelle l’heure standard change à la suite de l’application de la règle d’ajustement) et des informations sur la date et l’heure spécifiques auxquelles les transitions doivent se produire pendant la période d’ajustement. Les transitions peuvent suivre une règle fixe ou une règle flottante.
Heure ambiguë Heure qui peut être associée à deux moments différents dans un fuseau horaire unique. Il se produit lorsque l’heure de l’horloge est ajustée à nouveau dans le temps, par exemple pendant la transition entre l’heure d’été d’un fuseau horaire et son heure standard. Par exemple, si cette transition se produit un jour particulier à 2 h 00 et que le temps passe à 1 h 00, chaque intervalle de temps compris entre 1 h 00 et 1 h 59 min 59 s peut être interprété comme une heure standard ou une heure d’été.
Règle fixe Règle d’ajustement qui définit une date particulière pour la transition vers ou depuis l’heure d’été. Par exemple, une transition entre l’heure d’été et l’heure standard qui se produit chaque année le 25 octobre suit une règle d’ajustement fixe.
Règle flottante Règle d’ajustement qui définit un jour particulier d’une semaine particulière d’un mois particulier pour la transition vers ou depuis l’heure d’été. Par exemple, une transition de l’heure standard à l’heure d’été qui se produit le troisième dimanche de mars suit une règle d’ajustement flottante.
Heure non valide Heure inexistante qui est un artefact de la transition de l’heure standard à l’heure d’été. Elle se produit lorsque l’heure de l’horloge est ajustée à l’avance dans le temps, par exemple pendant la transition entre l’heure standard d’un fuseau horaire et son heure d’été. Par exemple, si cette transition se produit sur un jour particulier à 2:00 A.M. et provoque la modification de l’heure à 3:00 A.M., chaque intervalle de temps compris entre 2:00 A.M. et 2:59:59 A.M. n’est pas valide.
Temps de transition Informations sur un changement d’heure spécifique, tel que le passage de l’heure d’été à l’heure normale ou inversement, dans un fuseau horaire particulier.

Fuseaux horaires et classe TimeZoneInfo

Dans .NET, un TimeZoneInfo objet représente un fuseau horaire. La TimeZoneInfo classe inclut une GetAdjustmentRules méthode qui retourne un tableau d’objets TimeZoneInfo.AdjustmentRule . Chaque élément de ce tableau fournit des informations sur la transition vers et depuis l’heure d’été pendant une période donnée. (Pour les fuseaux horaires qui ne prennent pas en charge l’heure d’été, la méthode retourne un tableau vide.) Chaque TimeZoneInfo.AdjustmentRule objet a une propriété et une DaylightTransitionStartDaylightTransitionEnd propriété qui définit la date et l’heure particulières de la transition vers et depuis l’heure d’été. La IsFixedDateRule propriété indique si cette transition est fixe ou flottante.

.NET s’appuie sur les informations de fuseau horaire fournies par le système d’exploitation Windows et stockées dans le Registre. En raison du nombre de fuseaux horaires de la terre, tous les fuseaux horaires existants ne sont pas représentés dans le Registre. En outre, étant donné que le Registre est une structure dynamique, les fuseaux horaires prédéfinis peuvent être ajoutés ou supprimés de celui-ci. Enfin, le Registre ne contient pas nécessairement de données de fuseau horaire historiques. Par exemple, dans Windows XP, le Registre contient des données sur un seul ensemble d’ajustements de fuseau horaire. Windows Vista prend en charge les données de fuseau horaire dynamique, ce qui signifie qu’un fuseau horaire unique peut avoir plusieurs règles d’ajustement qui s’appliquent à des intervalles spécifiques d’années. Toutefois, la plupart des fuseaux horaires définis dans le Registre Windows Vista et qui prennent en charge l’heure d’été n’ont qu’une ou deux règles d’ajustement prédéfinies.

La dépendance de la TimeZoneInfo classe sur le Registre signifie qu’une application prenant en charge les fuseaux horaires ne peut pas être certaine qu’un fuseau horaire particulier est défini dans le Registre. Par conséquent, la tentative d’instancier un fuseau horaire spécifique (autre que le fuseau horaire local ou le fuseau horaire qui représente UTC) doit utiliser la gestion des exceptions. Il doit également fournir une méthode permettant à l’application de continuer si un objet requis TimeZoneInfo ne peut pas être instancié à partir du Registre.

Pour gérer l’absence d’un fuseau horaire requis, la TimeZoneInfo classe inclut une CreateCustomTimeZone méthode que vous pouvez utiliser pour créer des fuseaux horaires personnalisés introuvables dans le Registre. Pour plus d’informations sur la création d’un fuseau horaire personnalisé, consultez Comment : créer des fuseaux horaires sans règles d’ajustement et Comment : créer des fuseaux horaires avec des règles d’ajustement. En outre, vous pouvez utiliser la ToSerializedString méthode pour convertir un fuseau horaire nouvellement créé en chaîne et l’enregistrer dans un magasin de données (par exemple, une base de données, un fichier texte, le Registre ou une ressource d’application). Vous pouvez ensuite utiliser la FromSerializedString méthode pour convertir cette chaîne en objet TimeZoneInfo . Pour plus d’informations, consultez Guide pratique pour enregistrer des fuseaux horaires dans une ressource incorporée et comment : restaurer des fuseaux horaires à partir d’une ressource incorporée.

Étant donné que chaque fuseau horaire est caractérisé par un décalage de base par rapport à UTC, ainsi qu’un décalage par rapport à l’heure UTC qui reflète toutes les règles d’ajustement existantes, une heure dans un fuseau horaire peut être facilement convertie en heure dans un autre fuseau horaire. À cet effet, l’objet TimeZoneInfo inclut plusieurs méthodes de conversion, notamment :

  • ConvertTimeFromUtc, qui convertit l’heure UTC en heure dans un fuseau horaire désigné.

  • ConvertTimeToUtc, qui convertit l’heure dans un fuseau horaire désigné en UTC.

  • ConvertTime, qui convertit l’heure dans un fuseau horaire désigné en heure dans un autre fuseau horaire désigné.

  • ConvertTimeBySystemTimeZoneId, qui utilise des identificateurs de fuseau horaire (au lieu d’objets TimeZoneInfo ) comme paramètres pour convertir l’heure dans un fuseau horaire désigné en heure dans un autre fuseau horaire désigné.

Pour plus d’informations sur la conversion des heures entre les fuseaux horaires, consultez Conversion des heures entre les fuseaux horaires.

Voir aussi