Freigeben über


Datumsangaben, Uhrzeiten und Zeitzonen

.NET stellt Typen bereit, die Datumsangaben, Uhrzeiten und Zeitzonen darstellen. In diesem Artikel werden diese Typen beschrieben.

Zusätzlich zur grundlegenden DateTime Struktur stellt .NET die folgenden Klassen bereit, die das Arbeiten mit Zeitzonen unterstützen:

  • TimeZoneInfo

    Verwenden Sie diese Klasse, um mit jeder Zeitzone zu arbeiten, die auf einem System vordefiniert ist, um neue Zeitzonen zu erstellen und Datums- und Uhrzeitangaben von einer Zeitzone in eine andere zu konvertieren. Verwenden Sie für die neue Entwicklung die TimeZoneInfo Klasse anstelle der TimeZone Klasse.

  • DateTimeOffset

    Verwenden Sie diese Struktur, um mit Datums- und Uhrzeitangaben zu arbeiten, deren Offset (oder Differenz) von UTC bekannt ist. Die DateTimeOffset-Struktur kombiniert einen Datums- und Uhrzeitwert mit der Abweichung dieser Uhrzeit von der UTC. Aufgrund ihrer Beziehung zu UTC identifiziert ein einzelner Datums- und Uhrzeitwert eindeutig einen einzelnen Zeitpunkt. Dadurch wird ein Wert von einem DateTimeOffset Computer in einen anderen portierbarer als ein DateTime Wert.

Die folgenden Klassen zur Unterstützung der Arbeit mit Zeit:

  • TimeSpan

    Verwenden Sie diese Struktur, um ein Zeitintervall darzustellen, z. B. eine verstrichene Zeit oder die Differenz zwischen zwei Datumsangaben.

  • TimeOnly

    Verwenden Sie diese Struktur, um eine Uhrzeit ohne Datum darzustellen. Die Uhrzeit stellt die Stunden, Minuten und Sekunden eines nicht spezifischen Tages dar. TimeOnlyhat einen Bereich von 00:00:00.0000000 bis .23:59:59.9999999 Dieser Typ kann zum Ersetzen von DateTime und TimeSpan Typen in Ihrem Code verwendet werden, wann immer Sie diese Typen verwendet haben, um eine Zeit zu repräsentieren. Weitere Informationen finden Sie unter Verwenden der DateOnly- und TimeOnly-Strukturen.

    Von Bedeutung

    TimeOnly ist für .NET Framework nicht verfügbar.

  • TimeProvider

    Dies ist eine Basisklasse, die eine Abstraktion der Zeit bereitstellt. Eine gängige Möglichkeit zum Überprüfen der aktuellen Uhrzeit ist die Verwendung DateTime.UtcNow oder DateTimeOffset.UtcNow. Diese Typen bieten jedoch keine Kontrolle darüber, was als "jetzt" betrachtet wird. Warum möchten Sie dies steuern? Testbarkeit. Angenommen, Sie schreiben eine Ereignisverfolgungsanwendung, die 1 Tag vor dem Ereignis Erinnerungen bereitstellt. Die Logik der App besteht darin, die Ereigniszeit jede Stunde zu überprüfen und den Benutzer nach 24 Stunden vor dem Ereignis zu benachrichtigen. Während Sie Ihre Tests für die App schreiben, stellen Sie ihren eigenen Typ bereit, der zum Testen dieser Logik umschließt DateTimeOffset.UtcNow , aber jetzt stellt .NET diese Abstraktionsklasse für Sie bereit.

    Weitere Informationen finden Sie unter "Was ist TimeProvider".

    Der TimeProvider Typ ist in .NET enthalten.

    Für .NET Framework und .NET Standard wird TimeProvider vom NuGet-Paket "Microsoft.Bcl.TimeProvider" bereitgestellt.

Die folgenden Klassen zur Unterstützung des Arbeitens mit Datumsangaben:

  • DateOnly

    Verwenden Sie diese Struktur, wenn Sie mit einem Wert arbeiten, der nur ein Datum darstellt. Das Datum stellt den ganzen Tag dar, vom Anfang des Tages bis zum Ende. DateOnly hat einen Bereich von 0001-01-01 bis 9999-12-31. Und dieser Typ stellt die Kombination aus Monat, Tag und Jahr ohne eine bestimmte Uhrzeit dar. Wenn Sie zuvor einen DateTime Typ in Ihrem Code verwendet haben, um ein Datum darzustellen, das die Uhrzeit ignoriert hat, verwenden Sie diesen Typ an seiner Stelle. Weitere Informationen finden Sie unter Verwenden der DateOnly- und TimeOnly-Strukturen.

    Von Bedeutung

    DateOnly ist für .NET Framework nicht verfügbar.

Der nächste Abschnitt enthält die Informationen, die Sie für die Arbeit mit Zeitzonen benötigen, und zum Erstellen von Zeitzonenfähigen Anwendungen, die Datums- und Uhrzeitangaben von einer Zeitzone in eine andere konvertieren können.

In diesem Abschnitt

Übersicht über Zeitzonen
Erläutert die Terminologie, Konzepte und Probleme beim Erstellen von Anwendungen mit Zeitzonen.

Auswählen zwischen DateTime, DateTimeOffset, TimeSpan und TimeZoneInfo
Erläutert, wann die Typen DateTime, DateTimeOffset und TimeZoneInfo bei der Arbeit mit Datums- und Uhrzeitdaten verwendet werden sollten.

Suchen der zeitzonen, die in einem lokalen System definiert sind
Beschreibt, wie die Zeitzonen aufgelistet werden, die in einem lokalen System gefunden wurden.

Vorgehensweise: Aufzählen von Zeitzonen, die auf einem Computer vorhanden sind
Enthält Beispiele, die die in der Registrierung eines Computers definierten Zeitzonen aufzählen und Benutzern die Auswahl einer vordefinierten Zeitzone aus einer Liste ermöglichen.

Vorgehensweise: Zugreifen auf die vordefinierten UTC- und lokalen Zeitzonenobjekte
Beschreibt, wie auf koordinierte Weltzeit und die lokale Zeitzone zugegriffen wird.

Anleitung: Instanziieren eines TimeZoneInfo-Objekts
Beschreibt, wie ein TimeZoneInfo Objekt aus der lokalen Systemregistrierung instanziiert wird.

Instanziieren eines DateTimeOffset-Objekts
Erläutert die Möglichkeiten, wie ein DateTimeOffset Objekt instanziiert werden kann, und die Möglichkeiten, wie ein DateTime Wert in einen DateTimeOffset Wert konvertiert werden kann.

Vorgehensweise: Erstellen von Zeitzonen ohne Anpassungsregeln
Beschreibt, wie Eine benutzerdefinierte Zeitzone erstellt wird, die den Übergang zu und von Sommerzeit nicht unterstützt.

Vorgehensweise: Erstellen von Zeitzonen mit Anpassungsregeln
Beschreibt, wie Eine benutzerdefinierte Zeitzone erstellt wird, die einen oder mehrere Übergänge zu und von Sommerzeit unterstützt.

Speichern und Wiederherstellen von Zeitzonen
TimeZoneInfo Beschreibt die Unterstützung für die Serialisierung und Deserialisierung von Zeitzonendaten und veranschaulicht einige Szenarien, in denen diese Features verwendet werden können.

Vorgehensweise: Speichern von Zeitzonen in einer eingebetteten Ressource
Beschreibt, wie Sie eine benutzerdefinierte Zeitzone erstellen und ihre Informationen in einer Ressourcendatei speichern.

Vorgehensweise: Wiederherstellen von Zeitzonen aus einer eingebetteten Ressource
Beschreibt, wie benutzerdefinierte Zeitzonen instanziiert werden, die in einer eingebetteten Ressourcendatei gespeichert wurden.

Ausführen von arithmetischen Vorgängen mit Datums- und Uhrzeitangaben
Erläutert die Probleme beim Hinzufügen, Subtrahieren und Vergleichen von DateTime- und DateTimeOffset-Werten.

Vorgehensweise: Zeitzonen bei der Datum- und Zeitberechnung verwenden
Erläutert, wie Datums- und Uhrzeitarithmetik ausgeführt wird, die die Anpassungsregeln einer Zeitzone widerspiegelt.

Konvertieren zwischen DateTime und DateTimeOffset
Beschreibt, wie Zwischen DateTime - und DateTimeOffset Werte konvertiert werden.

Konvertieren von Zeiten zwischen Zeitzonen
Beschreibt, wie Zeiten von einer Zeitzone in eine andere konvertiert werden.

Vorgehensweise: Auflösen mehrdeutiger Zeitangaben
Beschreibt, wie eine mehrdeutige Zeit aufgelöst wird, indem sie der Standardzeit der Zeitzone zugeordnet wird.

Vorgehensweise: Zulassen, dass Benutzer mehrdeutige Zeiten auflösen
Beschreibt, wie ein Benutzer die Zuordnung zwischen einer mehrdeutigen Ortszeit und koordinierter Weltzeit bestimmen kann.

Referenz

System.TimeZoneInfo