.NET与GMT标准时间之间的差异

fra*_*lic 47 .net timezone 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
Run Code Online (Sandbox Code Playgroud)

..还有这个...

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
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我认为UTC和GMT标准时间相当.


更新

经过进一步测试,我发现以下内容似乎是等效的:

"世界标准时间"

"格林威治标准时间"

"摩洛哥标准时间"

而在夏季,以下情况有所不同:

"GMT标准时间"

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

结束更新

Han*_*ant 35

GMT并没有调整夏令时(DST).你可以在这个网站的马口听到它.

添加以下代码行以查看问题的根源:

  Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);
Run Code Online (Sandbox Code Playgroud)

输出:真.

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

  • 我不认为Windows搞砸了,这只是一个术语混乱.他们使用GMT来指代包含都柏林,爱丁堡,里斯本,伦敦等地的时区,而那些**使用夏令时. (10认同)
  • @MAtt http://wwp.greenwichmeantime.com/what-is-gmt我住在英国,当时钟改变时我们坚持从GMT到BST GMT从未有过夏令时 - 它是基准时间 (2认同)

Chr*_*ell 22

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

在我看来,使用"格林威治标准时间"这个术语时的混淆似乎用来表示"格林威治标准时间"以及英国/爱尔兰使用的时区 - 在冬季和英国夏令时之间翻转在夏天,似乎没有一个明确的名称本身!

为了使事情更加混乱,我从TimeZoneInfo.GetSystemTimeZonesMSDN文档中运行了示例代码,并查看了输出.

我很惊讶地看到"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

似乎(至少对我来说)谁负责在微软定义时区,谁在这里进一步混淆了水域.

他们显然想描述在英国/爱尔兰使用的时区,但他们给了它一个ID,其中包括ID和显示名称中的"GMT"和UTC.我相信这个时区定义(无论应该叫什么)不是 UTC.它有可能在一年中的一半时间与UTC非常相似,但这就是全部!


Asa*_*sad 13

区别如下:

  • 格林威治标准时间(GMT)是一个术语,最初指的是伦敦格林威治皇家天文台的平均太阳时.而
  • 协调世界时(UTC)(法语:TempsUniverselCoordonné)是基于国际原子时(TAI)的时间标准,以不规则的间隔添加闰秒以补偿地球的减速旋转
  • 另一方面,日光节约时间(DST)是推进时钟To和for季节变化,以最大限度地利用日光.

    "It is observed in many countries but not all".它可能是变数,因为像去年夏天一些像巴基斯坦这样的国家决定比往常晚一个月带回时钟.

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

希望这可以帮助

  • 我建议您重新设置答案的格式,因为读者可能会认为答案的含义与GMT,UTC和DST类似。GMT和UTC类似,但DST不是。 (2认同)

Boa*_*les 13

这是一个迟到的回复,原始提问者不太可能阅读,但谷歌为此主题的人可能会发现.

名称格林威治标准时间标准时间格林尼治标准时间夏令时在雷德蒙德之外是未知的.它们是神秘的动物,只出现在被称为Windows注册表的动物群中.在现实世界中,在冬季,英国观察格林威治标准时间(格林威治标准时间),夏季观察英国夏令时(BST).BST比GMT提前1小时(向东).欧洲人一般不会谈论"白昼时间"而是"夏季时间",至少在我所知的语言中.

一位受访者表示应该使用UTC而不是GMT.这个来自国际天文学联盟的建议可以追溯到1935年.它的观点是,在1925年之前,格林威治标准时间从中午开始算到午夜,所以即使是10年之后,模糊的可能性仍然存在.但它现在有点过时了.在过去的80年里,GMT和环球时间这两个术语几乎是同义词.当然不是.但是你需要一位天文学家来解释你的不同之处.如果你担心几小时而不是几秒钟,你可能不会在乎.

GMT是关于英语国家的民事计时.它不是过时的.它在英国,爱尔兰,加拿大甚至比利时都有法律规定.

世界时的各种风格都是关于天文计时的.

我认为,民事计时是最初的问题所在.


egm*_*frs 11

“GMT标准时间” = 英国时间(冬季为 GMT+0,如果是英国夏季则为 GMT+1。)

基本上,如果您想将 UTC 转换为英国时间,请使用“GMT标准时间

普通的旧“GMT”(或格林威治标准时间)或多或少是 UTC,相差几毫秒。它不会根据英国的夏令时进行调整,因此我们从未有过它的用例。

所有其他答案都以一种非常冗长的方式解释了这一点,其中一些答案具有误导性或矛盾性,因此我想提供另一个答案,希望它可以帮助人们避免所有阅读和困惑。