TimeZoneInfo.FindSystemTimeZoneById(String) Methode

Definitie

Retourneert een TimeZoneInfo object op basis van de id.

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

Parameters

id
String

De tijdzone-id, die overeenkomt met de Id eigenschap.

Retouren

Een object waarvan de id de waarde van de id parameter is.

Uitzonderingen

Het systeem beschikt niet over voldoende geheugen om informatie over de tijdzone te bewaren.

De id parameter is null.

De tijdzone-id die is opgegeven door id , is niet gevonden. Dit betekent dat een tijdzone-id waarvan de naam id niet bestaat of dat de id bestaat, maar geen tijdzonegegevens bevat.

Het proces beschikt niet over de vereiste machtigingen om te lezen uit de registersleutel die de tijdzone-informatie bevat.

De tijdzone-id is gevonden, maar de registergegevens zijn beschadigd.

Voorbeelden

In het volgende voorbeeld wordt de FindSystemTimeZoneById methode gebruikt om de tijdzone Tokyo Standard Time op te halen. Dit TimeZoneInfo object wordt vervolgens gebruikt om de lokale tijd te converteren naar de tijd in Tokio en om te bepalen of het Tokyo Standard Time of Tokyo Daylight Time is.

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

Opmerkingen

De id parameter moet exact overeenkomen met de id van de tijdzone in lengte, maar niet in het geval dat een geslaagde overeenkomst plaatsvindt; dat wil zeggen dat de vergelijking met id tijdzone-id's niet hoofdlettergevoelig is. Als u tijdzoneobjecten wilt ophalen op basis van gedeeltelijke overeenkomsten, kunt u aangepaste procedures schrijven die werken met de verzameling TimeZoneInfo alleen-lezen objecten die door de GetSystemTimeZones methode worden geretourneerd.

Op Windows systemen probeert FindSystemTimeZoneByIdid te koppelen aan de subsleutelnamen van de HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones branch van het register. Vanaf .NET 6 ondersteunen Windows systemen ook IANA-tijdzone-id's (zoals 'Amerika/Los_Angeles' of 'Pacific/Auckland'), die platformoverschrijdende tijdzoneresolutie bieden. IANA-id's worden alleen ondersteund op Windows alleen als NLS niet is ingeschakeld en de globalisatie-invariantmodus niet is ingeschakeld. In Linux en macOS wordt gebruikgemaakt van tijdzone-informatie die beschikbaar is in de ICU-bibliotheek. Als het register of de bibliotheek niet beschikt over de informatie voor de gewenste tijdzone, kunt u een bepaalde tijdzone maken door een van de overbelastingen van de CreateCustomTimeZone methode aan te roepen FromSerializedString of door een TimeZoneInfo object te deserialiseren dat de vereiste tijdzone vertegenwoordigt. Tijdzones die door deze methode-aanroepen worden gemaakt, zijn echter geen door het systeem gedefinieerde tijd en kunnen niet worden opgehaald met behulp van de FindSystemTimeZoneById methode. Deze aangepaste tijdzones kunnen alleen worden geopend via de objectverwijzing die wordt geretourneerd door de CreateCustomTimeZone aanroep of FromSerializedString methode.

In .NET 7 en eerdere versies retourneert deze methode een nieuw TimeZoneInfo-exemplaar voor elke methode-aanroep. Dit kan van invloed zijn op de prestaties in toepassingen die de FindSystemTimeZoneById methode herhaaldelijk aanroepen met dezelfde id. (In .NET 8 en latere versies retourneert deze methode altijd een in de cache opgeslagen TimeZoneInfo-exemplaar.)

Van toepassing op

Zie ook