TimeZoneInfo.FindSystemTimeZoneById(String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt ein TimeZoneInfo Objekt basierend auf seinem Bezeichner zurück.
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
Parameter
Gibt zurück
Ein Objekt, dessen Bezeichner der Wert des id
-Parameters ist.
Ausnahmen
Das System verfügt nicht über genügend Speicher zum Speichern von Informationen über die Zeitzone.
Der id
-Parameter ist null
.
Der durch id
angegebene Zeitzonenbezeichner wurde nicht gefunden. Das bedeutet, dass kein Zeitzonenbezeichner vorhanden ist, dessen Name id
entspricht, oder dass der Bezeichner vorhanden ist, jedoch keine Zeitzonendaten enthält.
Der Prozess verfügt nicht über die erforderlichen Berechtigungen zum Lesen aus dem Registrierungsschlüssel, der die Zeitzoneninformationen enthält.
Der Zeitzonenbezeichner wurde gefunden, aber die Registrierungsdaten sind beschädigt.
Beispiele
Im folgenden Beispiel wird die FindSystemTimeZoneById -Methode verwendet, um die Tokyo Standard-Zeitzone abzurufen. Dieses TimeZoneInfo Objekt wird dann verwendet, um die Ortszeit in die Zeit in Tokio zu konvertieren und zu bestimmen, ob es sich um die Tokyo Standard Time oder Tokyo Daylight Time handelt.
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
Hinweise
Der id
Parameter muss genau dem Bezeichner der Zeitzone in der Länge entsprechen, aber nicht für den Fall, dass eine erfolgreiche Übereinstimmung auftritt. Das heißt, beim Vergleich id
mit Zeitzonenbezeichnern wird die Groß-/Kleinschreibung nicht beachtet. Wenn Sie Zeitzonenobjekte basierend auf partiellen Übereinstimmungen abrufen möchten, können Sie benutzerdefinierte Prozeduren schreiben, die mit der schreibgeschützten Auflistung der TimeZoneInfo von der GetSystemTimeZones -Methode zurückgegebenen Objekte funktionieren.
Versucht auf Windows-Systemen, FindSystemTimeZoneById
mit den Unterschlüsselnamen des HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones Branch der Registrierung zu übereinstimmen id
. Unter Linux und macOS werden Zeitzoneninformationen verwendet, die in der ICU-Bibliothek verfügbar sind. Wenn die Registrierung oder bibliothek nicht über die Informationen für die gewünschte Zeitzone verfügt, können Sie eine bestimmte Zeitzone erstellen, indem Sie entweder eine der Überladungen der CreateCustomTimeZone -Methode aufrufen oder ein TimeZoneInfo Objekt aufrufenFromSerializedString, das die erforderliche Zeitzone darstellt. Von diesen Methodenaufrufen erstellte Zeitzonen sind jedoch keine systemdefinierte Zeit und können nicht mit der FindSystemTimeZoneById -Methode abgerufen werden. Auf diese benutzerdefinierten Zeitzonen kann nur über den Objektverweis zugegriffen werden, der CreateCustomTimeZone vom Methodenaufruf oder FromSerializedString zurückgegeben wird.
In .NET 7 und früheren Versionen gibt diese Methode einen neuen TimeZoneInfo instance für jeden Methodenaufruf zurück. Dies kann sich auf die Leistung in Anwendungen auswirken, die die FindSystemTimeZoneById
Methode wiederholt mit demselben Bezeichner aufrufen. (In .NET 8 und höheren Versionen gibt diese Methode immer eine zwischengespeicherte TimeZoneInfo zurück. instance.)