Share via


Comment : créer des fuseaux horaires sans règles d'ajustement

Mise à jour : novembre 2007

Les informations de fuseau horaire précises requises par une application peuvent être absentes d'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 du Registre.

  • Le fuseau horaire existe, mais ne dispose pas d'informations exactes sur les ajustements des fuseaux horaires pour une période donnée.

Dans ces cas précis, vous pouvez appeler la méthode CreateCustomTimeZone pour définir le fuseau horaire requis par 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 de date fixe ou flottante. (Pour obtenir les définitions de ces termes, consultez la section « Terminologie de fuseau horaire » dans Vue d'ensemble des fuseaux horaires.)

Remarque importante :

Les fuseaux horaires personnalisés créés en appelant la méthode CreateCustomTimeZone ne sont pas ajoutés au Registre. Seule la référence d'objet retournée par l'appel de méthode CreateCustomTimeZone permet d'y accéder.

Cette rubrique indique 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 Comment : 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 complet du fuseau horaire.

    Le nom complet respecte un format relativement standard dans lequel l'offset du fuseau horaire par rapport au temps universel coordonné (UTC, Coordinated Universal Time) est mis entre parenthèses et suivi d'une chaîne qui identifie le fuseau horaire, ainsi qu'une ou plusieurs villes ou un ou plusieurs pays ou régions du fuseau horaire.

  2. Définissez le nom de l'heure d'hiver du fuseau horaire. En général, cette chaîne est également utilisée comme identificateur de fuseau horaire.

  3. Si vous souhaitez utiliser un identificateur différent du nom standard du fuseau horaire, définissez l'identificateur de fuseau horaire.

  4. Instanciez un objet TimeSpan qui définit l'offset du fuseau horaire par rapport à l'heure UTC. Les fuseaux horaires dont les heures sont ultérieures à l'heure UTC présentent un offset positif. Inversement, les fuseaux horaires dont les heures sont antérieures à l'heure UTC présentent un offset 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é sans règles d'ajustement pour la région de Mawson, en Antarctique.

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)      
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);      

La chaîne assignée à la propriété DisplayName respecte un format standard dans lequel l'offset du fuseau horaire par rapport à l'heure UTC est suivi d'une description du fuseau horaire.

Compilation du code

Cet exemple nécessite :

  • qu'une référence à System.Core.dll soit ajoutée au projet ;

  • que les espaces de noms suivants soient importés :

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

Voir aussi

Tâches

Comment : créer des fuseaux horaires avec des règles d'ajustement

Concepts

Vue d'ensemble des fuseaux horaires

Autres ressources

Heures et fuseaux horaires