Heim >Backend-Entwicklung >C++ >Wie erstelle ich ein DateTime-Objekt in einer bestimmten Zeitzone (z. B. PST) in C#, ohne Local oder UTC zu verwenden?

Wie erstelle ich ein DateTime-Objekt in einer bestimmten Zeitzone (z. B. PST) in C#, ohne Local oder UTC zu verwenden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-26 04:16:14204Durchsuche

How to Create a DateTime Object in a Specific Time Zone (e.g., PST) in C# Without Using Local or UTC?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn