คำตอบอื่น ๆ ที่นี่มีประโยชน์ แต่ไม่ครอบคลุมถึงวิธีการเข้าถึงแปซิฟิกโดยเฉพาะ - ที่นี่:
public static DateTime GmtToPacific(DateTime dateTime)
{
return TimeZoneInfo.ConvertTimeFromUtc(dateTime,
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));
}
ผิดปกติพอถึงแม้ว่าปกติ "เวลามาตรฐานแปซิฟิก" หมายถึงบางสิ่งที่แตกต่างจาก "เวลาตามฤดูกาลของแปซิฟิก" ในกรณีนี้มันหมายถึงเวลาแปซิฟิกโดยทั่วไป ในความเป็นจริงถ้าคุณใช้FindSystemTimeZoneById
เพื่อดึงข้อมูลหนึ่งในคุณสมบัติที่มีคือบูลบอกคุณว่าเขตเวลานั้นอยู่ในการประหยัดเวลากลางวันหรือไม่
คุณสามารถดูตัวอย่างทั่วไปของสิ่งนี้ได้ในห้องสมุดที่ฉันได้รวมตัวกันเพื่อจัดการกับ DateTimes ที่ฉันต้องการในเขตเวลาที่แตกต่างกันโดยขึ้นอยู่กับว่าผู้ใช้ร้องขอจากที่ใด ฯลฯ :
https://github.com/b9chris/TimeZoneInfoLib.Net
สิ่งนี้จะไม่ทำงานนอก Windows (เช่น Mono บน Linux) เนื่องจากรายการเวลามาจาก Windows Registry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
ภายใต้ที่คุณจะพบคีย์ (ไอคอนโฟลเดอร์ใน Registry Editor); FindSystemTimeZoneById
ชื่อของคีย์เหล่านั้นเป็นสิ่งที่คุณส่งไป บนลีนุกซ์คุณต้องใช้ชุดคำจำกัดความเขตเวลามาตรฐานแยกต่างหากซึ่งฉันได้สำรวจไม่เพียงพอ