Інші відповіді тут корисні, але вони не висвітлюють, як конкретно отримати доступ до Тихого океану - ось що:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
Як не дивно, хоча "тихоокеанський стандартний час" зазвичай означає щось інше, ніж "тихоокеанський літній час", в цьому випадку він взагалі відноситься до тихоокеанського часу. Насправді, якщо ви використовуєте його FindSystemTimeZoneById
для отримання, одним із доступних властивостей є загальний сигнал, який повідомляє вам, чи перебуває цей часовий пояс у режимі денного світла чи ні.
Ви можете побачити більш узагальнені приклади цього в бібліотеці, яку я закінчив, збираючи разом, щоб розібратися з DateTimes, який мені потрібен в різних TimeZones, залежно від того, звідки запитує користувач тощо:
https://github.com/b9chris/TimeZoneInfoLib.Net
Це не працюватиме за межами Windows (наприклад, Mono в Linux), оскільки список разів надходить із реєстру Windows:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
Під цим ви знайдете ключі (піктограми папок у редакторі реєстру); назви цих ключів - це те, до чого ви переходите FindSystemTimeZoneById
. В Linux ви повинні використовувати окремий стандартний набір Linux для визначення часових поясів, який я не вивчив належним чином.