UTC和GMT标准时间在.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标准时间是相同的。


更新

经过进一步testing,我发现以下内容似乎是等同的:

“世界标准时间”

“格林威治标准时间”

“摩洛哥标准时间”

鉴于夏季月份以下情况不同:

“格林尼治标准时间”

也许我的问题应该是,为什么“格林威治标准时间”和“格林尼治标准时间”不同?

结束更新

GMT不调整夏令时 (DST)。 你可以在这个网站上从马的嘴里听到。

添加下面这行代码来查看问题的根源:

  Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime); 

输出:真。

这不是一个.NET的问题,它是Windows搞乱了。 TimeZoneInfo使用的registry项是HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones \ GMT标准时间。 你最好坚持使用UTC。

[我真的只是支持Hans Passant的答案]

在我看来,使用“格林尼治标准时间”这个词似乎是一个混乱,这个词的意思是“格林威治标准时间”,也是英国/爱尔兰使用的时区,冬季格林尼治标准时间与英国夏令时在夏天,似乎没有一个明确的名字在自己的权利!

为了更加混淆事物,我运行了TimeZoneInfo.GetSystemTimeZones的MSDN文档中的示例代码,并查看了输出。

我非常惊讶地看到“GMT标准时间”时区的下列定义

编号:GMT标准时间
   显示名称:(UTC)都柏林,爱丁堡,里斯本,伦敦
   标准名称:GMT标准时间
   夏令时名称:GMT夏令时***有夏令时***
   从UTC抵消:0小时0分钟
   调整规则的数量:1
   调整规则:
      从01/01/0001 00:00:00至31/12/9999 00:00:00
       Delta:01:00:00
       3月5日周日01:00开始
       10月5日周日02:00结束

看起来(至less在我看来)谁负责定义微软的时间区域,实际上已经在这里进一步混淆了水域。

他们显然想描述在英国/爱尔兰使用的时区,但是他们给了它一个ID,在ID和显示名称中包括术语“GMT”和UTC。 我相当确信这个时区定义(不pipe它应该被称为) 不是 UTC。 它可能有一半时间与UTC非常相似,但这就是全部!

区别如下:

  • 格林威治标准时间(GMT)是指伦敦格林威治皇家天文台的平均太阳时间。 而
  • 协调世界时(UTC) (法文:Temps UniverselCoordonné)是基于国际primefaces时间(TAI)的时间标准,以不规则间隔增加闰秒来补偿地球的减速旋转
  • 另一方面, 日光节约时间(DST)正在推进时钟以适应季节变化,以最大限度地利用日光。

    "It is observed in many countries but not all" 。 这可能是变化的,去年夏天,一些像巴基斯坦这样的国家决定比通常晚一个月的时间倒计时。

  • 世界时区是全球最新的时间信息的良好资源。

希望这可以帮助

这是一个迟到的回应,原来的提问者不太可能阅读,但哪些谷歌这个主题的人可能会发现。

除了Redmond外, GMT标准时间GMT夏令时间的名称是未知的。 他们是神话般的动物,只出现在称为Windowsregistry的兽医。 在现实世界中,英国冬季的格林尼治标准时间(GMT)和夏季的英国夏令时(BST)都是在英国观测的。 BST比格林威治标准时间提前1小时(东)。 欧洲人通常不会谈论“夏令时”,而是“夏令时”,至less用我所知道的语言来说。

一位受访者表示,应该使用UTC而不是GMT 。 国际天文学联合会的这一build议可以追溯到1935年。其意义在于,在1925年以前,格林尼治标准时间从中午开始计算,而不是午夜,所以即使在10年后,模糊的可能性仍然可能持续下去。 但现在有点过时了。 在过去的80年里,格林尼治标准时间和世界时间几乎是同义词。 当然不是。 但是你需要一个天文学家向你解释这个区别。 如果你关心的是几个小时,而不是几秒钟,你可能不会在意。

格林威治标准时间是英语国家的民事计时。 它并没有过时。 它在英国,爱尔兰,加拿大,甚至比利时都被奉为法律。

世界各地的各种口味都是关于天文计时的。

我认为,民间计时是原来的问题。

具有"GMT Standard Time".IdTimeZoneInfo对象对应于"(UTC) Dublin, Edinburgh, Lisbon, London".DisplayName

此时区在冬季使用格林尼治标准时间(GMT)(UTC + 0),夏季使用英国夏令时(BST)(UTC + 1)。

在这里引用 。

UTC的时区具有"UTC".Id"(UTC) Coordinated Universal Time".DisplayName

他们是两个不同的时区设置。

另外,在Windows中查看时区显示名称列表时:

时区列表

括号中的值只是标准偏移量,所以看起来UTC有四种不同的设置,实际上只有一个。 只有在夏令时不生效的情况下,其他三个区域使用UTC作为基准偏移。

以下是对协调一致的时区的讨论。 在时间框架需要高精度时,通常使用UTC。 Greenwhich Meantime非常接近并且与UTC一起使用。

希望这有助于一些。