Jawaban lain di sini bermanfaat tetapi tidak mencakup cara mengakses Pasifik secara khusus - ini dia:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
Anehnya, walaupun "Waktu Standar Pasifik" biasanya berarti sesuatu yang berbeda dari "Waktu Siang Pasifik", dalam hal ini mengacu pada waktu Pasifik secara umum. Bahkan, jika Anda menggunakannya FindSystemTimeZoneById
untuk mengambilnya, salah satu properti yang tersedia adalah bool yang memberi tahu Anda apakah zona waktu saat ini dalam penghematan siang hari atau tidak.
Anda dapat melihat lebih banyak contoh umum ini di perpustakaan yang akhirnya saya lempar bersama untuk menangani DateTimes yang saya butuhkan di Zona Waktu berbeda berdasarkan dari mana pengguna meminta, dll:
https://github.com/b9chris/TimeZoneInfoLib.Net
Ini tidak akan berfungsi di luar Windows (misalnya Mono di Linux) karena daftar waktu berasal dari Windows Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
Di bawahnya Anda akan menemukan kunci (ikon folder di Peninjau Suntingan Registri); nama kunci-kunci itulah yang Anda gunakan FindSystemTimeZoneById
. Di Linux, Anda harus menggunakan satu set definisi zona waktu standar Linux yang terpisah, yang saya belum cukup jelajahi.