.NET中UTC和GMT标准时间之间的差异

.NET中UTC和GMT标准时间之间的差异,.net,timezone,utc,gmt,.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 Stand

在.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标准时间是相等的


更新

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

“UTC”

“格林威治标准时间”

“摩洛哥标准时间”

鉴于,以下情况在夏季月份有所不同:

“格林尼治标准时间”

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

结束更新

以下是对的讨论。似乎UTC通常在时间范围需要高精度时使用。格林威治时间非常接近,与UTC来回使用


希望这能有所帮助。

区别如下:

  • 是 最初指平均数的术语 皇家天文台太阳时 在伦敦的格林威治。鉴于
  • (法语:坦普斯大学) Coordonné)是基于时间标准的 关于国际原子时(TAI) 以不规则的速度增加闰秒 补偿时间间隔 地球的慢自转
  • 另一方面是 将时钟提前到并用于 季节变化,最大限度地利用 白昼

    “这在许多国家都存在,但并非所有国家都存在”
    。这可能是可变的,因为去年夏天,巴基斯坦等一些国家决定比平时晚一个月把时钟调回来

  • 这是个好主意 用于最新时间的资源 全球信息

希望这有帮助

GMT不调整(DST)。你可以从这匹马的嘴里听到

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

  Console.WriteLine(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time").SupportsDaylightSavingTime);
输出:True


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

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

在我看来,“格林威治标准时间”一词的用法似乎有点混乱,它似乎是用来表示“格林威治标准时间”,同时也是英国/爱尔兰使用的时区——它在冬季的格林威治标准时间和夏季的英国夏季时间之间切换,似乎没有一个明确的名称

为了让事情更加混乱,我从运行示例代码并查看输出

我很惊讶地看到“格林尼治标准时间”时区的以下定义

ID:GMT标准时间 显示名称:(UTC)都柏林、爱丁堡、里斯本、伦敦 标准名称:格林尼治标准时间 夏令时名称:GMT夏令时***有夏令时*** 与UTC的偏移量:0小时0分钟 调整规则数:1 调整规则: 从01/01/0001 00:00:00至31/12/9999 00:00:00 增量:01:00:00 3月第5周星期日01:00开始 10月5日星期日02:00结束 看来(至少在我看来),无论是谁,在微软负责定义时区的人,都在这里把事情搞得一团糟


他们显然想描述英国/爱尔兰使用的时区,但他们给了它一个ID,在ID和显示名称中包含术语“GMT”和UTC。我相当有信心,这个时区定义(无论它应该被称为什么)不是UTC。它可能有半年的时间与UTC非常相似,但仅此而已

具有
“GMT标准时间”
.Id
TimeZoneInfo
对象对应于
(UTC)都柏林、爱丁堡、里斯本、伦敦的
.DisplayName

该时区在冬季月份使用格林威治标准时间(GMT)(UTC+0),在夏季月份使用英国夏季时间(BST)(UTC+1)

UTC时区的
.Id
“UTC”
.DisplayName
“(UTC)协调世界时”

它们是两种不同的时区设置。

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


括号中的值只是标准偏移量,因此虽然UTC有四种不同的设置,但实际上只有一种设置。只是其他三个区域在夏时制未生效时使用UTC作为其基准偏移量。

这是一个延迟的回答,原始提问者不太可能阅读,但搜索此主题的人可能会发现

格林尼治标准时间和格林尼治夏令时的名称在雷德蒙之外是未知的。它们是神话中的动物,只出现在名为Windows注册表的兽栏中。在现实世界中,英国在冬季观测格林威治标准时间(GMT),在夏季观测英国夏令时(BST)。英国夏令时比格林尼治标准时间提前1小时(向东)。欧洲人通常不谈论“白天”,而是谈论“夏季”,至少用我所知道的语言是这样的

一位受访者表示,应该优先使用UTC而不是GMT。国际天文联合会的这一建议可以追溯到1935年。它的观点是,在1925年之前,格林尼治标准时间是从中午开始计算的,而不是从午夜开始计算的,因此即使是在10年后,模棱两可的可能性仍然存在。但是现在有点过时了。在过去的80年里,GMT和世界时几乎是同义词。当然不是。但是你需要一个天文学家来解释这种差异。如果你关心的是时间,而不是秒,你可能不会在意

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