TimeZoneInfo.FindSystemTimeZoneById(String) メソッド

定義

その識別子に基づいて、新しい TimeZoneInfo オブジェクトをインスタンス化されます。Instantiates a new TimeZoneInfo object based on its identifier.

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 プロパティの値です。The time zone identifier, which corresponds to the Id property.

戻り値

ID が id パラメーターの値であるオブジェクト。An object whose identifier is the value of the id parameter.

例外

タイム ゾーンに関する情報を保持するために必要なメモリがシステムにありません。The system does not have enough memory to hold information about the time zone.

id パラメーターが null です。The id parameter is null.

id で指定されたタイム ゾーン ID が見つかりませんでした。The time zone identifier specified by id was not found. つまり、id と同じ名前のタイム ゾーン識別子が存在していないか、または識別子は存在するものの、それにはタイム ゾーンのデータが含まれていません。This means that a time zone identifier whose name matches id does not exist, or that the identifier exists but does not contain any time zone data.

プロセスには、タイム ゾーン情報を格納するレジストリ キーからの読み取りに必要な権限がありません。The process does not have the permissions required to read from the registry key that contains the time zone information.

タイム ゾーン ID が見つかりましたが、レジストリ データが破損しています。The time zone identifier was found, but the registry data is corrupted.

次の例ではFindSystemTimeZoneById 、メソッドを使用して、東京標準タイムゾーンを取得します。The following example uses the FindSystemTimeZoneById method to retrieve the Tokyo Standard Time zone. TimeZoneInfoに、このオブジェクトを使用して、現地時刻を東京の時刻に変換し、東京標準時と東京夏時間のどちらであるかを判断します。This TimeZoneInfo object is then used to convert the local time to the time in Tokyo and to determine whether it is Tokyo Standard Time or Tokyo Daylight Time.

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ありません。つまり、とタイムゾーン識別子の比較では大文字と小文字が区別されません。The id parameter must correspond exactly to the time zone's identifier in length, but not in case, for a successful match to occur; that is, the comparison of id with time zone identifiers is case-insensitive. 部分一致に基づいてタイムゾーンオブジェクトを取得する場合は、 TimeZoneInfo GetSystemTimeZonesメソッドによって返されるオブジェクトの読み取り専用コレクションを操作するカスタムプロシージャを記述できます。If you want to retrieve time zone objects based on partial matches, you can write custom procedures that work with the read-only collection of TimeZoneInfo objects returned by the GetSystemTimeZones method.

Windows システムではFindSystemTimeZoneById 、は、 idレジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones 分岐のサブキー名との照合を試みます。On Windows systems, FindSystemTimeZoneById tries to match id to the subkey names of the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones branch of the registry. Linux と macOS では、 ICU ライブラリにあるタイムゾーン情報が使用されます。On Linux and macOS, it uses time zone information available in the ICU Library. レジストリまたはライブラリに必要なタイムゾーンの情報がない場合は、 CreateCustomTimeZoneメソッドのいずれかのオーバーロードを呼び出すか、を呼び出しFromSerializedStringて、オブジェクトをTimeZoneInfo逆シリアル化することによって、特定のタイムゾーンを作成できます。必要なタイムゾーンを表します。If the registry or the library does not have the information for the time zone you desire, you can create a particular time zone either by calling one of the overloads of the CreateCustomTimeZone method or by calling FromSerializedString to deserialize a TimeZoneInfo object that represents the required time zone. ただし、これらのメソッド呼び出しによって作成されたタイムゾーンはシステム定義の時刻でFindSystemTimeZoneByIdはなく、メソッドを使用して取得することはできません。However, time zones created by these method calls are not system-defined time and cannot be retrieved using the FindSystemTimeZoneById method. これらのカスタムタイムゾーンには、メソッドまたはCreateCustomTimeZone FromSerializedStringメソッドの呼び出しによって返されるオブジェクト参照を使用してのみアクセスできます。These custom time zones can be accessed only through the object reference returned by the CreateCustomTimeZone or FromSerializedString method call.

このメソッドは、メソッドTimeZoneInfo呼び出しごとに新しいインスタンスを返します。キャッシュされたオブジェクトは返しません。This method returns a new TimeZoneInfo instance for each method call; it does not return cached objects. これは、同じ識別子を使用してFindSystemTimeZoneByIdメソッドを繰り返し呼び出すアプリケーションのパフォーマンスに影響を与える可能性があります。This may impact performance in applications that call the FindSystemTimeZoneById method repeatedly with the same identifier.

適用対象

こちらもご覧ください