Các câu trả lời khác ở đây rất hữu ích nhưng chúng không bao gồm cách truy cập cụ thể vào Thái Bình Dương - ở đây bạn đi:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
Thật kỳ lạ, mặc dù "Giờ chuẩn Thái Bình Dương" thường có nghĩa khác với "Giờ ban ngày Thái Bình Dương", trong trường hợp này nói chung là giờ Thái Bình Dương nói chung. Trong thực tế, nếu bạn sử dụng FindSystemTimeZoneById
để tìm nạp nó, một trong những thuộc tính có sẵn là một bool cho bạn biết liệu múi giờ đó có đang tiết kiệm ánh sáng ban ngày hay không.
Bạn có thể xem các ví dụ tổng quát hơn về điều này trong thư viện mà tôi đã kết hợp với nhau để đối phó với DateTimes tôi cần trong các múi giờ khác nhau dựa trên nơi người dùng đang hỏi, v.v.
https://github.com/b9chris/TimeZoneInfoLib.Net
Điều này sẽ không hoạt động bên ngoài Windows (ví dụ Mono trên Linux) vì danh sách thời gian đến từ Windows Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
Bên dưới bạn sẽ tìm thấy các khóa (biểu tượng thư mục trong Registry Editor); tên của các phím đó là những gì bạn chuyển đến FindSystemTimeZoneById
. Trên Linux, bạn phải sử dụng một bộ định nghĩa múi giờ tiêu chuẩn Linux riêng biệt mà tôi chưa khám phá đầy đủ.