[英]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.