Erstellen Sie ein DateTime-Objekt mit einer bestimmten Zeitzone in C#
Wenn Sie Unit-Tests mit Zeitzonenänderungen durchführen, müssen Sie in der Lage sein, DateTime-Objekte in einer bestimmten nicht lokalen Zeitzone zu erstellen.
Frage:
Wie erstelle ich ein DateTime-Objekt mit einer bestimmten Zeitzone (z. B. PST), ohne auf die lokale Zeitzone oder die UTC-Zeitzone angewiesen zu sein?
Antwort:
Der DateTime-Konstruktor lässt nur die lokale Zeitzone, die UTC-Zeitzone oder nicht spezifizierte Optionen zu. Daher können wir TimeZoneInfo verwenden.
Lösung:
Um DateTime-Objekte mit einer bestimmten Zeitzone (z. B. PST) erstellen zu können, sollten Sie die Implementierung einer benutzerdefinierten Struktur in Betracht ziehen:
<code class="language-csharp">public struct DateTimeWithZone { private readonly DateTime utcDateTime; private readonly TimeZoneInfo timeZone; public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone) { var dateTimeUnspec = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified); utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTimeUnspec, timeZone); this.timeZone = timeZone; } public DateTime UniversalTime => utcDateTime; public TimeZoneInfo TimeZone => timeZone; public DateTime LocalTime => TimeZoneInfo.ConvertTime(utcDateTime, timeZone); }</code>
Mit dieser Struktur können Sie ein DateTime-Objekt mit einer bestimmten Zeitzone erstellen und auf dessen UTC-Zeit und Ortszeit zugreifen. Vereinfachen Sie Ihren Code mithilfe von Ausdruckskörpereigenschaften.
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein DateTime-Objekt in einer bestimmten Zeitzone (z. B. PST) in C#, ohne Local oder UTC zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!