方法: 調整規則のないタイムゾーンを作成するHow to: Create time zones without adjustment rules

アプリケーションで必要とされる正確なタイムゾーン情報は、次のような理由で特定のシステムに存在しない場合があります。The precise time zone information that is required by an application may not be present on a particular system for several reasons:

  • タイムゾーンがローカルシステムのレジストリに定義されていません。The time zone has never been defined in the local system's registry.

  • タイムゾーンに関するデータは、レジストリから変更または削除されています。Data about the time zone has been modified or removed from the registry.

  • タイムゾーンは存在しますが、特定の履歴期間のタイムゾーン調整に関する正確な情報がありません。The time zone exists but does not have accurate information about time zone adjustments for a particular historic period.

このような場合は、CreateCustomTimeZone メソッドを呼び出して、アプリケーションで必要とされるタイムゾーンを定義できます。In these cases, you can call the CreateCustomTimeZone method to define the time zone required by your application. このメソッドのオーバーロードを使用して、調整規則の有無に関係なくタイムゾーンを作成できます。You can use the overloads of this method to create a time zone with or without adjustment rules. タイムゾーンで夏時間がサポートされている場合は、固定調整規則または浮動調整規則のいずれかを使用して調整を定義できます。If the time zone supports daylight saving time, you can define adjustments with either fixed or floating adjustment rules. (これらの用語の定義については、「タイムゾーンの概要」の「タイムゾーンの用語」セクションを参照してください)。(For definitions of these terms, see the "Time Zone Terminology" section in Time zone overview.)

重要

CreateCustomTimeZone メソッドを呼び出すことによって作成されたカスタムタイムゾーンは、レジストリには追加されません。Custom time zones created by calling the CreateCustomTimeZone method are not added to the registry. 代わりに、CreateCustomTimeZone メソッド呼び出しによって返されるオブジェクト参照を使用してのみアクセスできます。Instead, they can be accessed only through the object reference returned by the CreateCustomTimeZone method call.

このトピックでは、調整規則を使用せずにタイムゾーンを作成する方法について説明します。This topic shows how to create a time zone without adjustment rules. 夏時間調整規則をサポートするタイムゾーンを作成するには、「方法: 調整規則を使用してタイムゾーンを作成する」を参照してください。To create a time zone that supports daylight saving time adjustment rules, see How to: Create time zones with adjustment rules.

調整規則のないタイムゾーンを作成するにはTo create a time zone without adjustment rules

  1. タイムゾーンの表示名を定義します。Define the time zone's display name.

    表示名は、標準の形式に準拠しています。この形式では、世界協定時刻 (UTC) からのタイムゾーンのオフセットがかっこで囲まれ、その後にタイムゾーンを識別する文字列、タイムゾーン内の1つ以上の都市、または1つ以上の cou が続きます。タイムゾーンの ntries またはリージョン。The display name follows a fairly standard format in which the time zone's offset from Coordinated Universal Time (UTC) is enclosed in parentheses and is followed by a string that identifies the time zone, one or more of the cities in the time zone, or one or more of the countries or regions in the time zone.

  2. タイムゾーンの標準時刻の名前を定義します。Define the name of the time zone's standard time. 通常、この文字列はタイムゾーンの識別子としても使用されます。Typically, this string is also used as the time zone's identifier.

  3. タイムゾーンの標準名とは異なる識別子を使用する場合は、タイムゾーン識別子を定義します。If you want to use a different identifier than the time zone's standard name, define the time zone identifier.

  4. タイムゾーンの UTC からのオフセットを定義する TimeSpan オブジェクトをインスタンス化します。Instantiate a TimeSpan object that defines the time zone's offset from UTC. 時刻が UTC より遅いタイムゾーンには、正のオフセットがあります。Time zones with times that are later than UTC have a positive offset. 時刻が UTC より前のタイムゾーンでは、負のオフセットが使用されます。Time zones with times that are earlier than UTC have a negative offset.

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

Example

次の例では、調整規則のない Mawson、南極のカスタムタイムゾーンを定義します。The following example defines a custom time zone for Mawson, Antarctica, which has no adjustment rules.

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)      

DisplayName プロパティに割り当てられた文字列は、標準形式に従います。この形式では、UTC からのタイムゾーンのオフセットの後にタイムゾーンのわかりやすい説明が続きます。The string assigned to the DisplayName property follows a standard format in which the time zone's offset from UTC is followed by a friendly description of the time zone.

コードのコンパイルCompiling the code

この例で必要な要素は次のとおりです。This example requires:

  • 次の名前空間がインポートされます。That the following namespaces be imported:

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

関連項目See also