Language

方法: 調整規則なしでタイム ゾーンを作成する

アプリケーションに必要な正確なタイム ゾーン情報は、いくつかの理由で特定のシステムに存在しない場合があります。

  • タイム ゾーンは、ローカル システムのレジストリで定義されていません。

  • タイム ゾーンに関するデータがレジストリから変更または削除されました。

  • タイム ゾーンは存在しますが、特定の履歴期間のタイム ゾーン調整に関する正確な情報がありません。

このような場合は、 CreateCustomTimeZone メソッドを呼び出して、アプリケーションに必要なタイム ゾーンを定義できます。 このメソッドのオーバーロードを使用して、調整規則の有無にかかわらずタイム ゾーンを作成できます。 タイム ゾーンで夏時間がサポートされている場合は、固定またはフローティングのいずれかの調整規則を使用して調整を定義できます。 (これらの用語の定義については、 タイム ゾーンの概要の「タイム ゾーンの用語」セクションを参照してください)。

Important

CreateCustomTimeZone メソッドを呼び出して作成されたカスタム タイム ゾーンはレジストリに追加されません。 代わりに、 CreateCustomTimeZone メソッド呼び出しによって返されるオブジェクト参照を介してのみアクセスできます。

このトピックでは、調整ルールなしでタイム ゾーンを作成する方法について説明します。 夏時間調整ルールをサポートするタイム ゾーンを作成するには、「 方法: 調整規則を使用してタイム ゾーンを作成する」を参照してください。

調整ルールなしでタイム ゾーンを作成するには

  1. タイム ゾーンの表示名を定義します。

    表示名は、協定世界時 (UTC) からのタイム ゾーンのオフセットがかっこで囲まれ、その後にタイム ゾーン、タイム ゾーン内の 1 つ以上の都市、またはタイム ゾーン内の 1 つ以上の国または地域を識別する文字列が続く、かなり標準的な形式に従います。

  2. タイム ゾーンの標準時刻の名前を定義します。 通常、この文字列はタイム ゾーンの識別子としても使用されます。

  3. タイム ゾーンの標準名とは異なる識別子を使用する場合は、タイム ゾーン識別子を定義します。

  4. UTC からのタイム ゾーンのオフセットを定義する TimeSpan オブジェクトをインスタンス化します。 UTC より後のタイム ゾーンには正のオフセットがあります。 UTC より前のタイム ゾーンには、負のオフセットがあります。

  5. TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) メソッドを呼び出して、新しいタイム ゾーンをインスタンス化します。

例

次の例では、調整規則のない、南極の Mawson のカスタム タイム ゾーンを定義します。

string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine($"The current time is {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)

DisplayName プロパティに割り当てられた文字列は、標準の形式に従い、UTC からのタイム ゾーンのオフセットの後にタイム ゾーンのわかりやすい説明が続きます。

コードのコンパイル

この例では、次のものが必要です。

  • 次の名前空間がインポートされていること。

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

こちらも参照ください