Chrome JavaScript日期构造器似乎获取1884年之前的日期错误

时间:2018-07-03 17:01:34

标签: javascript google-chrome date timezone

如果我将1/1/1753的unix毫秒时间戳值(在午夜)(-6847786800000)传递给Chrome中的JavaScript Date()构造函数,则日期Chrome给我的感觉真的很奇怪。使用带有七个参数的Date()构造函数时,我会感到其他奇怪。示例如下。

Chrome:  new Date(-6847786800000): Mon Jan 01 1753 00:03:58 GMT-0456 (Eastern Standard Time)
Firefox: new Date(-6847786800000): Mon Jan 01 1753 00:00:00 GMT-0500 (Eastern Standard Time)

请注意Chrome如何制作时间3:58和时区GMT-0456(奇怪的时区似乎与奇怪的时间(4分钟)大致相同。)

Chrome:  new Date(1753, 0, 1, 0, 0, 0, 0): Mon Jan 01 1753 00:00:00 GMT-0456 (Eastern Standard Time)
Firefox: new Date(1753, 0, 1, 0, 0, 0, 0): Mon Jan 01 1753 00:00:00 GMT-0500 (Eastern Standard Time)

请注意,Chrome浏览器是如何给我提供0:00的时间,但仍然具有GMT-0456时区。

玩各种日期,这种奇怪的行为似乎始于1884年之前的日期-不确定确切的日期。 1/1/1884的行为与您预期的一样,但是1/1/1883的行为是“ 3:58结束”。

这是错误还是我错过了什么?

我在以下方面对此进行了测试: Chrome 67.0.3396.99(Official Build)(64位); Firefox 61.0(64位); IE 11和Edge 42.17134.1.0的结果与Firefox相同

更新

对我来说,这看起来不像是Browsers, time zones, Chrome 67 Error的副本。这个问题是关于时区的不同。它以1900为例。我说的是时间不同。它仅影响1884年之前的事物。它不影响1900年的日期。

为什么更改时区会更改实际时间?我不是时区向导,但对我来说似乎仍然是错误的。

更新

是的,在某种意义上可能是重复的。不确定Chrome是否更改了此行为。但这确实归结为一个事实,即与其他浏览器不同,现在Chrome浏览器会看到旧的unix时间戳,时间为11/18/1883之前的12:03:58 PM。因此,请注意是否需要为旧日期使用时间戳。我不再使用时间戳来避免此问题。

0 个答案:

没有答案