方法 : 調整規則のないタイム ゾーンを作成する
更新 : 2007 年 11 月
アプリケーションで必要な正確なタイム ゾーン情報が、次のような理由で特定のシステムに存在しない場合があります。
ローカル システムのレジストリでタイム ゾーンが定義されていない。
タイム ゾーンに関するデータがレジストリで変更または削除されている。
タイム ゾーンは存在するが、過去の特定の期間のタイム ゾーン調整に関する正確な情報がない。
このような場合は、CreateCustomTimeZone メソッドを呼び出して、アプリケーションで必要なタイム ゾーンを定義できます。このメソッドのオーバーロードを使用すると、調整規則のあるタイム ゾーンまたは調整規則のないタイム ゾーンを作成できます。タイム ゾーンが夏時間をサポートする場合は、固定調整規則または浮動調整規則の調整を定義できます。これらの用語の定義については、「タイム ゾーンの概要」の「タイム ゾーンの用語」の節を参照してください。
重要 : |
---|
CreateCustomTimeZone メソッドを呼び出すことで作成されるカスタム タイム ゾーンは、レジストリには追加されません。カスタム タイム ゾーンには、CreateCustomTimeZone メソッドの呼び出しによって返されるオブジェクト参照を通してのみアクセスできます。 |
このトピックでは、調整規則のないタイム ゾーンを作成する方法について説明します。夏時間調整規則をサポートするタイム ゾーンを作成する方法については、「方法 : 調整規則のあるタイム ゾーンを作成する」を参照してください。
調整規則のないタイム ゾーンを作成するには
タイム ゾーンの表示名を指定します。
表示名は、世界協定時刻 (UTC: Coordinated Universal Time) からのタイム ゾーンのオフセットをかっこで囲み、その後にタイム ゾーン、タイム ゾーン内の 1 つ以上の都市、またはタイム ゾーン内の 1 つ以上の国や地域を表す文字列が続く標準形式に従います。
タイム ゾーンの標準時刻の名前を指定します。通常は、この文字列がタイム ゾーンの ID としても使用されます。
タイム ゾーンの標準名とは異なる ID を使用する場合は、タイム ゾーン ID を指定します。
UTC からのタイム ゾーンのオフセットを定義する TimeSpan オブジェクトをインスタンス化します。UTC より後の時刻のタイム ゾーンでは正のオフセットになります。UTC より前の時刻のタイム ゾーンでは負のオフセットになります。
TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) メソッドを呼び出して、新しいタイム ゾーンをインスタンス化します。
使用例
次の例では、南極のモーソンの、調整規則のないカスタム タイム ゾーンを定義します。
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);
DisplayName プロパティに割り当てる文字列は、UTC からのタイム ゾーンのオフセットの後に、タイム ゾーンのわかりやすい説明を続ける標準形式に従います。
コードのコンパイル方法
この例で必要な要素は次のとおりです。
System.Core.dll への参照をプロジェクトに追加する。
次の名前空間をインポートする。
Imports System.Collections.Generic Imports System.Collections.ObjectModel
using System.Collections.Generic; using System.Collections.ObjectModel;