TimeZoneInfo.FindSystemTimeZoneById(String) メソッド

定義

その識別子に基づいて、新しい TimeZoneInfo オブジェクトをインスタンス化されます。

public:
 static TimeZoneInfo ^ FindSystemTimeZoneById(System::String ^ id);
public static TimeZoneInfo FindSystemTimeZoneById (string id);
static member FindSystemTimeZoneById : string -> TimeZoneInfo
Public Shared Function FindSystemTimeZoneById (id As String) As TimeZoneInfo

パラメーター

id
String

タイム ゾーン ID。Id プロパティの値です。

戻り値

TimeZoneInfo

ID が id パラメーターの値であるオブジェクト。

例外

システムに、タイム ゾーンの情報を保持するための十分なメモリがありません。

id パラメーターが null です。

指定されたタイム ゾーン ID id が見つかりませんでした。 つまり、id と同じ名前のタイム ゾーン識別子が存在していないか、または識別子は存在するものの、それにはタイム ゾーンのデータが含まれていません。

プロセスには、タイム ゾーン情報を格納するレジストリ キーからの読み取りに必要なアクセス許可がありません。

タイム ゾーン ID が見つかりましたが、レジストリ データが壊れています。

次の例では、 FindSystemTimeZoneById メソッドを使用して、東京標準時ゾーンを取得します。 このオブジェクトは、ローカル時刻を東京の時刻に変換し、それが東京標準時か東京夏時間かを判断 TimeZoneInfo するために使用されます。

using System;

public class Example
{
   public static void Main()
   {
      // Get time in local time zone 
      DateTime thisTime = DateTime.Now;
      Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                        TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
      // Get Tokyo Standard Time zone
      TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
      DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);      
      Console.WriteLine("Time in {0} zone: {1}", tst.IsDaylightSavingTime(tstTime) ?
                        tst.DaylightName : tst.StandardName, tstTime);
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
   }
}
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
//       Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
//       Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
//          UTC Time: 12/6/2013 6:57:51 PM
Module Example
   Public Sub Main()
      ' Get time in local time zone 
      Dim thisTime As Date = Date.Now
      Console.WriteLine("Time in {0} zone: {1}", IIf(TimeZoneInfo.Local.IsDaylightSavingTime(thisTime), 
                        TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), thisTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local))
      ' Get Tokyo Standard Time zone
      Dim tst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
      Dim tstTime As Date = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)      
      Console.WriteLine("Time in {0} zone: {1}", IIf(tst.IsDaylightSavingTime(tstTime), 
                        tst.DaylightName, tst.StandardName), tstTime)
      Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst))
   End Sub
End Module
' The example displays output like the following when run on a system in the U.S.
' Pacific Standard Time zone:
'    Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM
'    Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
'       UTC Time: 12/6/2013 6:57:51 PM

注釈

パラメーターは、正しく一致する場合は、タイム ゾーンの識別子の長さに正確に対応する必要がありますが、大文字と小文字は区別されません。つまり、タイム ゾーン識別子との比較では大文字と小文字が区別されません。 id id 部分一致に基づいてタイム ゾーン オブジェクトを取得する場合は、 メソッドによって返されるオブジェクトの読み取り専用コレクションを操作するカスタム プロシージャ TimeZoneInfo を記述 GetSystemTimeZones できます。

システムWindowsでは、 はレジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones FindSystemTimeZoneById id ブランチのサブキー名との一致を試みる。 Linux および macOS では、ICU ライブラリ で使用できるタイム ゾーン 情報が使用されます。 レジストリまたはライブラリに必要なタイム ゾーンの情報が存在しない場合は、 メソッドのいずれかのオーバーロードを呼び出すか、 を呼び出して、必要なタイム ゾーンを表す オブジェクトを逆シリアル化することで、特定のタイム ゾーンを作成できます。 CreateCustomTimeZone FromSerializedString TimeZoneInfo ただし、これらのメソッド呼び出しによって作成されたタイム ゾーンはシステム定義の時刻ではなく、 メソッドを使用して取得 FindSystemTimeZoneById することはできません。 これらのカスタム タイム ゾーンには、 メソッド呼び出しまたは メソッド呼び出しによって返されるオブジェクト参照 CreateCustomTimeZone を介して FromSerializedString のみアクセスできます。

このメソッドは、メソッド呼び出 TimeZoneInfo しごとに新しいインスタンスを返します。キャッシュされたオブジェクトは返しません。 これは、同じ識別子でメソッドを繰り返し呼び出すアプリケーションの FindSystemTimeZoneById パフォーマンスに影響を与える可能性があります。

適用対象

こちらもご覧ください