[英]Difference between UTC and GMT Standard Time in .NET
在 .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 標准時間是等效的。
更新
經過進一步測試,我發現以下內容似乎是等效的:
“世界標准時間”
“格林威治標准時間”
《摩洛哥標准時間》
而在夏季,以下情況有所不同:
“格林威治標准時間”
也許我的問題應該是,為什么“格林威治標准時間”和“格林威治標准時間”不同?
結束更新
[我真的只是在支持 Hans Passant 的回答]
在我看來,對術語“GMT”的使用感到困惑,該術語似乎用於表示“格林威治標准時間”以及英國/愛爾蘭使用的時區 - 在冬季的格林威治標准時間和英國夏令時間之間轉換在夏天,它本身似乎沒有一個明確的名字!
為了讓事情更加混亂,我運行了MSDN 文檔中 TimeZoneInfo.GetSystemTimeZones的示例代碼並查看了輸出。
我很驚訝地看到以下“GMT 標准時間”時區的定義
ID: GMT Standard Time Display Name: (UTC) Dublin, Edinburgh, Lisbon, London Standard Name: GMT Standard Time Daylight Name: GMT Daylight Time ***Has Daylight Saving Time*** Offset from UTC: 0 hours, 0 minutes Number of adjustment rules: 1 Adjustment Rules: From 01/01/0001 00:00:00 to 31/12/9999 00:00:00 Delta: 01:00:00 Begins at 01:00 on Sunday of week 5 of March Ends at 02:00 on Sunday of week 5 of October
似乎(至少對我而言)負責在 Microsoft 中定義時區的人在這里真的把水弄得更混亂了。
他們顯然想描述在英國/愛爾蘭使用的時區,但他們給了它一個 ID,在 ID 和顯示名稱中包含術語“GMT”和 UTC。 我相當確信這個時區定義(無論它應該叫什么)不是UTC。 它可能有半年與 UTC 非常相似的時間,但僅此而已!
這是一個遲到的回復,原始提問者不太可能閱讀,但谷歌搜索此主題的人可能會找到。
GMT 標准時間和GMT 夏令時的名稱在雷德蒙德以外是未知的。 它們是只出現在名為 Windows 注冊表的動物寓言中的神話動物。 在現實世界中,英國在冬天遵守 GMT(格林威治標准時間),在夏天遵守 BST(英國夏令時)。 BST 比 GMT 提前 1 小時(向東)。 歐洲人一般不談論“夏令時”而是“夏令時”,至少在我知道的語言中是這樣。
一位受訪者表示應該優先使用UTC而不是GMT 。 這個來自國際天文學聯合會的建議可以追溯到 1935 年。它的要點是,在 1925 年之前,格林威治標准時間是從中午而不是午夜開始計算的,所以即使是 10 年后,歧義的可能性仍然存在。 但是現在有點過時了。 在過去的 80 年里,GMT 和世界時這兩個術語幾乎是同義詞。 當然不完全是。 但是您需要一位天文學家來向您解釋其中的區別。 如果您關心小時,而不是秒,您可能不會在意。
GMT 是關於英語國家的民用計時。 它並沒有過時。 它被載入英國、愛爾蘭、加拿大甚至比利時的法律。
世界時間的各種風格都是關於天文計時的。
我認為,民用計時就是最初的問題。
區別如下:
另一方面,夏令時 (DST)是隨着季節變化而推進時鍾,以最大限度地利用日光。
"It is observed in many countries but not all"
。 這可能是可變的,因為去年夏天,巴基斯坦等一些國家決定比平時晚一個月恢復時鍾。
World Time Zones是獲取全球最新時間信息的好資源。
希望這可以幫助
“GMT標准時間” = 英國時間(如果是英國的夏季,則冬季為 GMT+0 或 GMT+1。)
基本上,如果您想將 UTC 轉換為英國時間,請使用“GMT標准時間”
普通的舊“GMT”(或格林威治標准時間)或多或少是 UTC,給出或花費幾毫秒。 它不會針對英國的夏令時進行調整,因此我們從未有過使用案例。
所有其他答案都以非常冗長的方式解釋了這一點,其中一些答案具有誤導性或矛盾性,因此我想提供另一個答案,希望它可以避免某些人的閱讀和困惑。
具有"GMT Standard Time"
的.Id
的TimeZoneInfo
對象對應於"(UTC) Dublin, Edinburgh, Lisbon, London"
的.DisplayName
。
該時區在冬季使用格林威治標准時間 (GMT) (UTC+0),在夏季使用英國夏令時間 (BST) (UTC+1)。
參考這里。
UTC 時區的.Id
為"UTC"
, .DisplayName
為"(UTC) Coordinated Universal Time"
。
它們是兩種不同的時區設置。
此外,在查看 Windows 中的時區顯示名稱列表時:
括號中的值只是標准偏移量,因此雖然看起來 UTC 有四種不同的設置,但實際上只有一種。 只是其他三個區域在夏令時不生效時使用 UTC 作為它們的基本偏移量。
這里是Coordinated Universal Timezones的討論。 當時間范圍需要高精度時,似乎通常使用UTC。 Greenwhich 同時非常接近並且與 UTC 來回使用。
希望這對一些人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.