Vorgehensweise: Erstellen von Zeitzonen ohne Anpassungsregeln

Die genauen Zeitzoneninformationen, die von einer Anwendung benötigt werden, können aus mehreren Gründen nicht auf einem bestimmten System vorhanden sein:

  • Die Zeitzone wurde nie in der Registrierung des lokalen Systems definiert.

  • Daten zur Zeitzone wurden geändert oder aus der Registrierung entfernt.

  • Die Zeitzone ist vorhanden, enthält aber keine genauen Informationen zu Zeitzonenanpassungen für einen bestimmten vergangenen Zeitraum.

In diesen Fällen können Sie die CreateCustomTimeZone-Methode aufrufen, um die Zeitzone zu definieren, die von Ihrer Anwendung benötigt wird. Sie können die Überladungen dieser Methode verwenden, um eine Zeitzone mit oder ohne Anpassungsregeln zu erstellen. Wenn die Zeitzone die Sommerzeit unterstützt, können Sie Anpassungen mit festen oder dynamischen Anpassungsregeln definieren. (Definitionen dieser Begriffe finden Sie im Abschnitt „Zeitzonenterminologie“ in der Zeitzonenübersicht.)

Wichtig

Benutzerdefinierte Zeitzonen, die durch Aufrufen der CreateCustomTimeZone-Methode erstellt wurden, werden der Registrierung nicht hinzugefügt. Stattdessen kann nur über den Objektverweis darauf zugegriffen werden, der vom CreateCustomTimeZone-Methodenaufruf zurückgegeben wird.

In diesem Artikel wird gezeigt, wie Sie eine Zeitzone ohne Anpassungsregeln erstellen. Informationen zum Erstellen einer Zeitzone, die Sommerzeit-Anpassungsregeln unterstützt, finden Sie unter Erstellen von Zeitzonen mit Anpassungsregeln.

Erstellen einer Zeitzone ohne Anpassungsregeln

  1. Definieren Sie den Anzeigenamen der Zeitzone.

    Der Anzeigename folgt einem Standardformat, bei dem die Differenz der Zeitzone zur koordinierten Weltzeit (UTC) in Klammern eingeschlossen ist und auf die eine Zeichenfolge folgt, die die Zeitzone, mindestens eine Stadt in der Zeitzone oder mindestens ein Land oder eine Region in der Zeitzone angibt.

  2. Definieren Sie den Namen der Standardzeit der Zeitzone. In der Regel wird diese Zeichenfolge auch als Bezeichner der Zeitzone verwendet.

  3. Wenn Sie einen anderen Bezeichner als den Standardnamen der Zeitzone verwenden möchten, definieren Sie den Zeitzonenbezeichner.

  4. Instanziieren Sie ein TimeSpan-Objekt, das die Differenz der Zeitzone zur koordinierten Weltzeit definiert. Zeitzonen mit Uhrzeiten, die hinter der koordinierten Weltzeit liegen, weisen eine positive Differenz auf. Zeitzonen mit Uhrzeiten, die vor der koordinierten Weltzeit liegen, weisen eine negative Differenz auf.

  5. Rufen Sie die TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String)-Methode auf, um die neue Zeitzone zu instanziieren.

Beispiel

Das folgende Beispiel definiert eine benutzerdefinierte Zeitzone für Mawson (Antarktis), für die keine Anpassungsregeln festgelegt wurden.

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)

Die der DisplayName-Eigenschaft zugewiesene Zeichenfolge folgt einem Standardformat, bei dem auf die Differenz der Zeitzone zur koordinierten Weltzeit eine anzeigefreundliche Beschreibung der Zeitzone folgt.

Kompilieren des Codes

Für dieses Beispiel benötigen Sie Folgendes:

  • Dass die folgenden Namespaces importiert werden:

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

Weitere Informationen