この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

方法 : 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする

 

TimeZoneInfo クラスに用意されている 2 つのプロパティ、Utc および Local を使用すると、コードから定義済みのタイム ゾーン オブジェクトにアクセスできます。 このトピックでは、これらのプロパティから返される TimeZoneInfo オブジェクトにアクセスする方法について説明します。

世界協定時刻 (UTC: Coordinated Universal Time) の TimeZoneInfo オブジェクトにアクセスするには

  1. static (Visual Basic では Shared) TimeZoneInfo.Utc プロパティを使用して、世界協定時刻にアクセスします。

  2. プロパティから返された TimeZoneInfo オブジェクトをオブジェクト変数に割り当てることはせず、そのまま TimeZoneInfo.Utc プロパティを使用して世界協定時刻にアクセスします。

ローカル タイム ゾーンにアクセスするには

  1. static (Visual Basic では Shared) TimeZoneInfo.Local プロパティを使用して、ローカル システム タイム ゾーンにアクセスします。

  2. プロパティから返された TimeZoneInfo オブジェクトをオブジェクト変数に割り当てることはせず、そのまま TimeZoneInfo.Local プロパティを使用してローカル タイム ゾーンにアクセスします。

使用例

次のコードは、米国およびカナダ東部標準時タイム ゾーンの時刻に変換し、コンソールにタイム ゾーンの名前を表示するために TimeZoneInfo.LocalTimeZoneInfo.Utc のプロパティを使用します。

// 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# のコードで必要)。

表示: