Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die TimeZoneInfo-Klasse verfügt über zwei Eigenschaften, Utc und Local, mit denen der Code auf vordefinierte Zeitzonenobjekte zugreifen kann. In diesem Thema wird erläutert, wie auf die TimeZoneInfo-Objekte zugegriffen wird, die von diesen Eigenschaften zurückgegeben werden.
So greifen Sie auf das TimeZoneInfo-Objekt der koordinierten Weltzeit (Coordinated Universal Time, UTC) zu
Verwenden Sie die static (Shared in Visual Basic) TimeZoneInfo.Utc-Eigenschaft zum Zugreifen auf die koordinierte Weltzeit (Coordinated Universal Time, UTC).
Statt das von der Eigenschaft zurückgegebene TimeZoneInfo-Objekt einer Objektvariablen zuzuweisen, sollten Sie weiterhin über die TimeZoneInfo.Utc-Eigenschaft auf die koordinierte Weltzeit (UTC) zugreifen.
So greifen Sie auf die lokale Zeitzone zu
Verwenden Sie die static (Shared in Visual Basic) TimeZoneInfo.Local-Eigenschaft zum Zugreifen auf die Zeitzone des lokalen Systems.
Statt das von der Eigenschaft zurückgegebene TimeZoneInfo-Objekt einer Objektvariablen zuzuweisen, sollten Sie weiterhin über die TimeZoneInfo.Local-Eigenschaft auf die lokale Zeitzone zugreifen.
Beispiel
Im folgenden Code werden die TimeZoneInfo.Local-Eigenschaft und die TimeZoneInfo.Utc-Eigenschaft zum Konvertieren einer Uhrzeit aus den Eastern Normalzeit-Zeitzonen in den USA und Kanada sowie zum Anzeigen des Zeitzonennamens in der Konsole verwendet.
' Create Eastern Standard Time value and TimeZoneInfo object
Dim estTime As Date = #01/01/2007 00:00:00#
Dim timeZoneName As String = "Eastern Standard Time"
Try
Dim est As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName)
' Convert EST to local time
Dim localTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local)
Console.WriteLine("At {0} {1}, the local time is {2} {3}.", _
estTime, _
est, _
localTime, _
IIf(TimeZoneInfo.Local.IsDaylightSavingTime(localTime), _
TimeZoneInfo.Local.DaylightName, _
TimeZoneInfo.Local.StandardName))
' Convert EST to UTC
Dim utcTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc)
Console.WriteLine("At {0} {1}, the time is {2} {3}.", _
estTime, _
est, _
utcTime, _
TimeZoneInfo.Utc.StandardName)
Catch e As TimeZoneNotFoundException
Console.WriteLine("The {0} zone cannot be found in the registry.", _
timeZoneName)
Catch e As InvalidTimeZoneException
Console.WriteLine("The registry contains invalid data for the {0} zone.", _
timeZoneName)
End Try
// Create Eastern Standard Time value and TimeZoneInfo object
DateTime estTime = new DateTime(2007, 1, 1, 00, 00, 00);
string timeZoneName = "Eastern Standard Time";
try
{
TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);
// Convert EST to local time
DateTime localTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local);
Console.WriteLine("At {0} {1}, the local time is {2} {3}.",
estTime,
est,
localTime,
TimeZoneInfo.Local.IsDaylightSavingTime(localTime) ?
TimeZoneInfo.Local.DaylightName :
TimeZoneInfo.Local.StandardName);
// Convert EST to UTC
DateTime utcTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc);
Console.WriteLine("At {0} {1}, the time is {2} {3}.",
estTime,
est,
utcTime,
TimeZoneInfo.Utc.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The {0} zone cannot be found in the registry.",
timeZoneName);
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("The registry contains invalid data for the {0} zone.",
timeZoneName);
}
Sie sollten immer über die TimeZoneInfo.Local-Eigenschaft auf die lokale Zeitzone zugreifen und nicht die lokale Zeitzone einer TimeZoneInfo-Objektvariablen zuweisen. Sie sollten entsprechend auch immer über die TimeZoneInfo.Utc-Eigenschaft auf die koordinierte Weltzeit (UTC) zugreifen und nicht die UTC-Zone einer TimeZoneInfo-Objektvariablen zuweisen. Dies verhindert, dass die TimeZoneInfo-Objektvariable durch einen Aufruf der TimeZoneInfo.ClearCachedData-Methode ungültig wird.
Kompilieren des Codes
Für dieses Beispiel ist Folgendes erforderlich:
Dem Projekt muss ein Verweis auf System.Core.dll hinzugefügt werden.
Der System-Namespace muss mit der using-Anweisung (in C#-Code erforderlich) importiert werden.
Siehe auch
Aufgaben
Gewusst wie: Instanziieren eines TimeZoneInfo-Objekts
Konzepte
Suchen der auf einem lokalen System definierten Zeitzonen