TimeZoneInfo.FindSystemTimeZoneById(String) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
識別子に 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 が 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
open System
// Get time in local time zone
let thisTime = DateTime.Now
printfn $"Time in {if TimeZoneInfo.Local.IsDaylightSavingTime thisTime then TimeZoneInfo.Local.DaylightName else TimeZoneInfo.Local.StandardName} zone: {thisTime}"
printfn $" UTC Time: {TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)}"
// Get Tokyo Standard Time zone
let tst = TimeZoneInfo.FindSystemTimeZoneById "Tokyo Standard Time"
let tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)
printfn $"Time in {if tst.IsDaylightSavingTime tstTime then tst.DaylightName else tst.StandardName} zone: {tstTime}"
printfn $" UTC Time: {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 システムでは、 FindSystemTimeZoneById
レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones ブランチのサブキー名との照合 id
を試みます。 Linux および macOS では、 ICU ライブラリで利用可能なタイム ゾーン情報が使用されます。 レジストリまたはライブラリに目的のタイム ゾーンの情報がない場合は、 メソッドのいずれかのオーバーロードを呼び出すか、 を呼び出して、必要なタイム ゾーンを表すオブジェクトを逆シリアル化TimeZoneInfoすることによってFromSerializedString、特定のCreateCustomTimeZoneタイム ゾーンを作成できます。 ただし、これらのメソッド呼び出しによって作成されたタイム ゾーンはシステム定義の時刻ではなく、 メソッドを FindSystemTimeZoneById 使用して取得することはできません。 これらのカスタム タイム ゾーンには、 メソッド呼び出しまたは FromSerializedString メソッド呼び出しによって返されるオブジェクト参照をCreateCustomTimeZone介してのみアクセスできます。
.NET 7 以前のバージョンでは、このメソッドはメソッド呼び出しごとに新しい TimeZoneInfo インスタンスを返します。 これは、同じ識別子を使用して メソッドを繰り返し呼び出す FindSystemTimeZoneById
アプリケーションのパフォーマンスに影響を与える可能性があります。 (.NET 8 以降のバージョンでは、このメソッドは常にキャッシュされた TimeZoneInfo インスタンスを返します)。
適用対象
こちらもご覧ください
.NET