Google chrome windows 10上chrome/edge之间的时间差

Google chrome windows 10上chrome/edge之间的时间差,google-chrome,timezone,microsoft-edge,Google Chrome,Timezone,Microsoft Edge,我在Windows10上看到了Chrome和Edge之间的差异。 在控制台中运行此代码时: > var date = new Date(2013, 2, 29, 1, 0, 0, 0); > date 这将是在Edge上运行时的输出 > [date] Fri Mar 29 2013 01:00:00 GMT+0200 (Jerusalem Standard Time) 这将是Chrome上的输出: > [date] Fri Mar 29 2013 01:00:00 G

我在Windows10上看到了Chrome和Edge之间的差异。 在控制台中运行此代码时:

> var date = new Date(2013, 2, 29, 1, 0, 0, 0);
> date
这将是在Edge上运行时的输出

> [date] Fri Mar 29 2013 01:00:00 GMT+0200 (Jerusalem Standard Time)
这将是Chrome上的输出:

> [date] Fri Mar 29 2013 01:00:00 GMT+0300 (Jerusalem Daylight Time)
在Chrome中,它似乎被识别为DST,但在Edge中它没有,这是正确的。
()

如果我关闭“自动调整日光节约时间”配置,Chrome日期将变为相同。()

有人能解释为什么吗?在任何“日期和时间”配置中,如何在chrome中获得正确的TZ

边缘版本:20.10240.16384.0
Chrome版本:56.0.2924.75(64位)

这确实是一个bug

委员会:

因此,2013年,DST应该在3月最后一个星期日(即3月29日)之前的星期五开始。(上周五是3月22日,不符合时区数据中的
Fri>=23
规则。)

Windows似乎具有正确的数据。审查登记处:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Israel Standard Time\Dynamic DST

我用绿色突出显示的最后一部分是DST开始日期

00 00 = Year        (ignored)
03 00 = Month       (March)
05 00 = Day of week (Friday)
05 00 = Day number  (5 = last)
02 00 = Hour        (02:00)
00 00 = Minute
00 00 = Second
00 00 = Millisecond
因此,Windows和IANA数据都指向同一日期。但不知何故,Chrome却弄错了

我还测试了FireFox,它似乎也出了问题:

我还可以在Node.js中重现这些结果

但是,是的,Edge是正确的:

请注意,浏览器在调整本地时间的方向上也会有所不同,该时间会落入由spring-forward转换创建的“间隙”中。这是预料之中的,而且

我不研究这些浏览器的实际实现,但我的理解是Chrome、Node和FireFox都依赖于它们的时区内部。我的猜测是,这是一个重症监护病房的细菌,是暴露在这里更新:这似乎是Microsoft C/C++运行时中的一个错误。我正在努力把它交给合适的人


至于如何处理它-如果准确的历史时区数据对您的应用程序至关重要,我强烈建议您不要依赖于环境来提供它,而是使用我列出的一个库(如(我帮助维护的库))。

标记为主题外,因为这与编程无关,但是对于一般的软件配置,@nicovank-我不同意。这显然是一个浏览器问题,屏幕截图中有代码。诺姆-请把代码直接放在问题中。谢谢@MattJohnson这是非常奇怪的行为,肯定与编程有关。谢谢@MattJohnson的详细回答!两点意见:1。我们应该为Chrome和FF打开一个bug吗?2.我测试的具体日期不是随机的。它被这个人使用。我还将提到这个问题,有报道称有Chrome bug,有报道称有FireFox bug。谢谢
00 00 = Year        (ignored)
03 00 = Month       (March)
05 00 = Day of week (Friday)
05 00 = Day number  (5 = last)
02 00 = Hour        (02:00)
00 00 = Minute
00 00 = Second
00 00 = Millisecond