Dot-Net
.NET 中 UTC 和 GMT 標準時間之間的差異
在 .NET 中,以下語句返回不同的值:
Response.Write( TimeZoneInfo.ConvertTime( DateTime.Parse("2010-07-01 5:30:00.000"), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"), TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")) ); // displays 7/1/2010 1:30:00 PM..和這個…
Response.Write( TimeZoneInfo.ConvertTime( DateTime.Parse("2010-07-01 5:30:00.000"), TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"), TimeZoneInfo.FindSystemTimeZoneById("UTC")) ); // displays 7/1/2010 12:30:00 PM為什麼是這樣?我認為 UTC 和 GMT 標準時間是等價的。
更新
經過進一步測試,我發現以下內容似乎是等效的:
“世界標準時間”
“格林威治標準時間”
“摩洛哥標準時間”
鑑於夏季月份的情況有所不同:
“格林威治標準時間”
也許我的問題應該是,為什麼“格林威治標準時間”和“格林威治標準時間”不同?
結束更新
GMT 不針對夏令時(DST) 進行調整。你可以在這個網站上從馬的嘴裡聽到它。
添加這行程式碼可以查看問題的根源:
Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);輸出:真。
這不是 .NET 問題,而是 Windows 搞砸了。TimeZoneInfo 使用的系統資料庫項是 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\GMT 標準時間。你最好堅持使用UTC。