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
Freigeben: 2025-01-26 04:16:14
Original
175 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage