Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Objek DateTime dalam Zon Masa Tertentu (mis., PST) dalam C# Tanpa Menggunakan Tempatan atau UTC?

Bagaimana untuk Mencipta Objek DateTime dalam Zon Masa Tertentu (mis., PST) dalam C# Tanpa Menggunakan Tempatan atau UTC?

Barbara Streisand
Barbara Streisandasal
2025-01-26 04:16:14204semak imbas

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

Buat objek DateTime dengan zon waktu tertentu dalam C#

Apabila melakukan ujian unit yang melibatkan perubahan zon waktu, anda mesti boleh mencipta objek DateTime dalam zon waktu bukan tempatan tertentu.

Soalan:

Bagaimana untuk mencipta objek DateTime dengan zon waktu tertentu (seperti PST) tanpa bergantung pada zon waktu tempatan atau zon waktu UTC?

Jawapan:

Pembina DateTime hanya membenarkan zon waktu tempatan, zon waktu UTC atau pilihan yang tidak ditentukan. Oleh itu, kita boleh menggunakan TimeZoneInfo.

Penyelesaian:

Untuk dapat mencipta objek DateTime dengan zon waktu tertentu (mis. PST), pertimbangkan untuk melaksanakan struktur tersuai:

<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>

Struktur ini membolehkan anda mencipta objek DateTime dengan zon waktu tertentu dan mengakses waktu UTC dan waktu tempatannya. Permudahkan kod anda menggunakan sifat badan ekspresi.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Objek DateTime dalam Zon Masa Tertentu (mis., PST) dalam C# Tanpa Menggunakan Tempatan atau UTC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn