다음을 통해 공유


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 매개 변수의 값인 개체입니다.

예외

시스템에 표준 시간대에 대한 정보를 보유할 메모리가 부족합니다.

id 매개 변수가 null인 경우

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 라이브러리에서 사용할 수 있는 표준 시간대 정보를 사용합니다. 레지스트리 또는 라이브러리에 원하는 표준 시간대에 대한 정보가 없는 경우 메서드의 CreateCustomTimeZone 오버로드 중 하나를 호출하거나 를 호출 FromSerializedString 하여 필요한 표준 시간대를 나타내는 개체를 역직렬화 TimeZoneInfo 하여 특정 표준 시간대를 만들 수 있습니다. 그러나 이러한 메서드 호출에서 만든 표준 시간대는 시스템 정의 시간이 아니며 메서드를 사용하여 FindSystemTimeZoneById 검색할 수 없습니다. 이러한 사용자 지정 표준 시간대는 또는 FromSerializedString 메서드 호출에서 반환된 개체 참조를 CreateCustomTimeZone 통해서만 액세스할 수 있습니다.

.NET 7 및 이전 버전에서 이 메서드는 각 메서드 호출에 대한 새 TimeZoneInfo instance 반환합니다. 이는 동일한 식별자를 사용하여 메서드를 반복적으로 호출하는 애플리케이션의 FindSystemTimeZoneById 성능에 영향을 미칠 수 있습니다. (.NET 8 이상 버전에서 이 메서드는 항상 캐시된 TimeZoneInfo 를 반환합니다. instance.)

적용 대상

추가 정보