方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする
更新 : 2007 年 11 月
TimeZoneInfo クラスに用意されている 2 つのプロパティ、Utc および Local を使用すると、コードから定義済みのタイム ゾーン オブジェクトにアクセスできます。このトピックでは、これらのプロパティから返される TimeZoneInfo オブジェクトにアクセスする方法について説明します。
世界協定時刻 (UTC: Coordinated Universal Time) の TimeZoneInfo オブジェクトにアクセスするには
static (Visual Basic では Shared) TimeZoneInfo.Utc プロパティを使用して、世界協定時刻にアクセスします。
プロパティから返された TimeZoneInfo オブジェクトをオブジェクト変数に割り当てることはせず、そのまま TimeZoneInfo.Utc プロパティを使用して世界協定時刻にアクセスします。
ローカル タイム ゾーンにアクセスするには
static (Visual Basic では Shared) TimeZoneInfo.Local プロパティを使用して、ローカル システム タイム ゾーンにアクセスします。
プロパティから返された TimeZoneInfo オブジェクトをオブジェクト変数に割り当てることはせず、そのまま TimeZoneInfo.Local プロパティを使用してローカル タイム ゾーンにアクセスします。
使用例
次のコードでは、TimeZoneInfo.Local プロパティと TimeZoneInfo.Utc プロパティを使用して米国とカナダの東部標準タイム ゾーンから時刻を変換し、タイム ゾーン名をコンソールに表示します。
' Create Eastern Standard Time value and TimeZoneInfo object
Dim estTime As Date = #01/01/2007 00:00:00#
Dim timeZoneName As String = "Eastern Standard Time"
Try
Dim est As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName)
' Convert EST to local time
Dim localTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local)
Console.WriteLine("At {0} {1}, the local time is {2} {3}.", _
estTime, _
est, _
localTime, _
IIf(TimeZoneInfo.Local.IsDaylightSavingTime(localTime), _
TimeZoneInfo.Local.DaylightName, _
TimeZoneInfo.Local.StandardName))
' Convert EST to UTC
Dim utcTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc)
Console.WriteLine("At {0} {1}, the time is {2} {3}.", _
estTime, _
est, _
utcTime, _
TimeZoneInfo.Utc.StandardName)
Catch e As TimeZoneNotFoundException
Console.WriteLine("The {0} zone cannot be found in the registry.", _
timeZoneName)
Catch e As InvalidTimeZoneException
Console.WriteLine("The registry contains invalid data for the {0} zone.", _
timeZoneName)
End Try
// Create Eastern Standard Time value and TimeZoneInfo object
DateTime estTime = new DateTime(2007, 1, 1, 00, 00, 00);
string timeZoneName = "Eastern Standard Time";
try
{
TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
// Convert EST to local time
DateTime localTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local);
Console.WriteLine("At {0} {1}, the local time is {2} {3}.",
estTime,
est,
localTime,
TimeZoneInfo.Local.IsDaylightSavingTime(localTime) ?
TimeZoneInfo.Local.DaylightName :
TimeZoneInfo.Local.StandardName);
// Convert EST to UTC
DateTime utcTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc);
Console.WriteLine("At {0} {1}, the time is {2} {3}.",
estTime,
est,
utcTime,
TimeZoneInfo.Utc.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The {0} zone cannot be found in the registry.",
timeZoneName);
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("The registry contains invalid data for the {0} zone.",
timeZoneName);
}
ローカル タイム ゾーンにアクセスする場合は、TimeZoneInfo オブジェクト変数にローカル タイム ゾーンを割り当てることはせず、必ず TimeZoneInfo.Local プロパティを使用してください。同様に、世界協定時刻にアクセスする場合は、UTC ゾーンを TimeZoneInfo オブジェクト変数に割り当てることはせず、必ず TimeZoneInfo.Utc プロパティを使用してください。これにより、TimeZoneInfo オブジェクト変数が TimeZoneInfo.ClearCachedData メソッド呼び出しによって無効になるのを防ぐことができます。
コードのコンパイル方法
この例で必要な要素は次のとおりです。
System.Core.dll への参照をプロジェクトに追加する。
System 名前空間を using ステートメントでインポートする (C# のコードで必要)。
参照
処理手順
方法 : TimeZoneInfo オブジェクトをインスタンス化する