方法: 定義済みの UTC とローカル タイム ゾーン オブジェクトにアクセスHow to: Access the predefined UTC and local time zone objects

TimeZoneInfoクラスには、2 つのプロパティが用意されていますUtcLocal、定義済みのタイム ゾーン オブジェクトをコードのアクセス権を付与します。The TimeZoneInfo class provides two properties, Utc and Local, that give your code access to predefined time zone objects. このトピックでは、これらのプロパティから返される TimeZoneInfo オブジェクトにアクセスする方法について説明します。This topic discusses how to access the TimeZoneInfo objects returned by those properties.

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

  1. 使用して、 static (Shared Visual Basic で)TimeZoneInfo.Utc協定世界時にアクセスするプロパティです。Use the static (Shared in Visual Basic) TimeZoneInfo.Utc property to access Coordinated Universal Time.

  2. 割り当てるのではなく、TimeZoneInfoオブジェクト変数に、プロパティによって返されるオブジェクトに引き続きアクセスを介して世界協定時刻、TimeZoneInfo.Utcプロパティです。Rather than assigning the TimeZoneInfo object returned by the property to an object variable, continue to access Coordinated Universal Time through the TimeZoneInfo.Utc property.

ローカル タイム ゾーンにアクセスするにはTo access the local time zone

  1. 使用して、 static (Shared Visual Basic で)TimeZoneInfo.Localローカル システムのタイム ゾーンにアクセスするプロパティです。Use the static (Shared in Visual Basic) TimeZoneInfo.Local property to access the local system time zone.

  2. 割り当てるのではなく、TimeZoneInfoオブジェクト変数に、プロパティによって返されるオブジェクトに引き続きアクセスを通じて、ローカル タイム ゾーン、TimeZoneInfo.Localプロパティです。Rather than assigning the TimeZoneInfo object returned by the property to an object variable, continue to access the local time zone through the TimeZoneInfo.Local property.

Example

次のコードでは、TimeZoneInfo.LocalTimeZoneInfo.Utcプロパティから米国およびカナダ東部標準時ゾーンの時刻の変換をできるだけでなく、タイム ゾーンの名前をコンソールに表示します。The following code uses the TimeZoneInfo.Local and TimeZoneInfo.Utc properties to convert a time from the U.S. and Canadian Eastern Standard time zone, as well as to display the time zone name to the console.

// 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);
}
' 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

を介して、ローカル タイム ゾーンを常にアクセスする必要があります、TimeZoneInfo.Localにゾーンのローカル時刻を割り当てるのではなく、プロパティ、TimeZoneInfoオブジェクト変数です。You should always access the local time zone through the TimeZoneInfo.Local property rather than assigning the local time zone to a TimeZoneInfo object variable. 同様に、アクセスすることは常に世界協定時刻で、TimeZoneInfo.Utcにゾーンの UTC を割り当てるのではなく、プロパティ、TimeZoneInfoオブジェクト変数です。Similarly, you should always access Coordinated Universal Time through the TimeZoneInfo.Utc property rather than assigning the UTC zone to a TimeZoneInfo object variable. これにより、TimeZoneInfoオブジェクト変数への呼び出しによって無効にされてから、TimeZoneInfo.ClearCachedDataメソッドです。This prevents the TimeZoneInfo object variable from being invalidated by a call to the TimeZoneInfo.ClearCachedData method.

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

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

  • される System.Core.dll への参照をプロジェクトに追加します。That a reference to System.Core.dll be added to the project.

  • Systemと共に名前空間をインポートする、usingステートメント (c# コードで必要です)。That the System namespace be imported with the using statement (required in C# code).

関連項目See also

日付、時刻、およびタイム ゾーン ローカル システムで定義されているタイム ゾーンの検索 する方法: TimeZoneInfo オブジェクトをインスタンス化Dates, times, and time zones Finding the time zones defined on a local system How to: Instantiate a TimeZoneInfo object