Buradaki diğer yanıtlar faydalıdır, ancak Pasifik'e özel olarak nasıl erişileceğini kapsamaz - işte gidiyorsunuz:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
Garip bir şekilde, "Pasifik Standart Saati" normalde "Pasifik Yaz Saati" nden farklı bir şey ifade etse de, bu durumda genel olarak Pasifik saati anlamına gelir. Aslında, FindSystemTimeZoneById
onu almak için kullanırsanız, mevcut özelliklerden biri, saat diliminin şu anda yaz saatinde olup olmadığını gösteren bir bool.
Kullanıcının istediği yere bağlı olarak farklı TimeZones'da ihtiyacım olan DateTimes'la başa çıkmak için bir araya getirdiğim bir kütüphanede bunun daha genel örneklerini görebilirsiniz:
https://github.com/b9chris/TimeZoneInfoLib.Net
Zaman listesi Windows Kayıt Defteri'nden geldiğinden, bu Windows dışında çalışmaz (örneğin Linux'ta Mono):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
Bunun altında anahtarları bulacaksınız (Kayıt Defteri Düzenleyicisi'nde klasör simgeleri); bu anahtarların isimleri geçtiğiniz şeydir FindSystemTimeZoneById
. Linux'ta, yeterince keşfetmediğim ayrı bir Linux standardında saat dilimi tanımları kümesi kullanmanız gerekir.