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!