Procédure : créer des fuseaux horaires sans règles d’ajustement

Les informations précises de fuseau horaire nécessaires à une application peuvent ne pas être présentes sur un système particulier pour plusieurs raisons :

  • Le fuseau horaire n’a jamais été défini dans le registre du système local.

  • Les données relatives au fuseau horaire ont été modifiées ou supprimées dans le registre.

  • Le fuseau horaire existe, mais il ne dispose pas d’informations précises sur les ajustements de fuseau horaire pour une période historique déterminée.

Dans ce cas, vous pouvez appeler la méthode CreateCustomTimeZone pour définir le fuseau horaire nécessaire à votre application. Vous pouvez utiliser les surcharges de cette méthode pour créer un fuseau horaire avec ou sans règles d’ajustement. Si le fuseau horaire prend en charge l’heure d’été, vous pouvez définir des ajustements avec des règles d’ajustement fixes ou flottantes. (Pour les définitions de ces termes, consultez la section « Terminologie des fuseaux horaires » dans Vue d’ensemble des fuseaux horaires.)

Important

Les fuseaux horaires personnalisés créés en appelant la méthode CreateCustomTimeZone ne sont pas ajoutés au registre. Au lieu de cela, ils sont accessibles uniquement via la référence d’objet retournée par l’appel de méthode CreateCustomTimeZone.

Cette rubrique montre comment créer un fuseau horaire sans règles d’ajustement. Pour créer un fuseau horaire qui prend en charge les règles d’ajustement de l’heure d’été, consultez Guide pratique pour créer des fuseaux horaires avec des règles d’ajustement.

Pour créer un fuseau horaire sans règles d’ajustement

  1. Définissez le nom d’affichage du fuseau horaire.

    Le nom d’affichage présente un format assez standard où le décalage du fuseau horaire par rapport au temps universel coordonné (UTC) est mis entre parenthèses et est suivi d’une chaîne qui identifie le fuseau horaire, une ou plusieurs villes du fuseau horaire, ou un ou plusieurs pays ou régions du fuseau horaire.

  2. Définissez le nom de l’heure standard du fuseau horaire. En règle générale, cette chaîne sert également d’identificateur du fuseau horaire.

  3. Si vous voulez utiliser un identificateur différent du nom standard du fuseau horaire, définissez l’identificateur du fuseau horaire.

  4. Instanciez un objet TimeSpan qui définit le décalage du fuseau horaire par rapport à UTC. Les fuseaux horaires dont les heures sont postérieures à UTC présentent un décalage positif. Les fuseaux horaires dont les heures sont antérieures à UTC présentent un décalage négatif.

  5. Appelez la méthode TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) pour instancier le nouveau fuseau horaire.

Exemple

L’exemple suivant définit un fuseau horaire personnalisé pour Mawson, Antarctique, qui ne comporte pas de règles d’ajustement.

string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new TimeSpan(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine("The current time is {0} {1}",
                  TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson),
                  mawson.StandardName);
Dim displayName As String = "(GMT+06:00) Antarctica/Mawson Time"
Dim standardName As String = "Mawson Time"
Dim offset As TimeSpan = New TimeSpan(06, 00, 00)
Dim mawson As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
Console.WriteLine("The current time is {0} {1}", _
                  TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, mawson), _
                  mawson.StandardName)

La chaîne affectée à la propriété DisplayName présente un format standard où le décalage du fuseau horaire par rapport à UTC est suivi d’une description conviviale du fuseau horaire.

Compilation du code

Cet exemple nécessite :

  • L’importation des espaces de noms suivants :

    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    
    Imports System.Collections.Generic
    Imports System.Collections.ObjectModel
    
    

Voir aussi