如果我将 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(官方版本)(64 位);
火狐 61.0(64 位);
IE 11 和 Edge 42.17134.1.0 给出与 Firefox 相同的结果
UPDATE
这看起来不像是重复的浏览器、时区、Chrome 67 错误 https://stackoverflow.com/questions/50609860/browsers-time-zones-chrome-67-error大部头书。这个问题正在谈论时区与众不同。以1900为例。我说的是time与众不同。它只影响 1884 年之前的内容。它不影响 1900 年的日期。
为什么更改时区会改变实际时间?我不是时区向导,但这对我来说仍然是错误的。
UPDATE
所以是的,在某种意义上可能是重复的。不确定 Chrome 是否因此改变了它的行为。但归根结底是这样一个事实:现在 Chrome 会将 1883 年 11 月 18 日下午 12:03:58 之前的旧 unix 时间戳视为与其他浏览器不同的时间点。因此,请注意您是否需要使用旧日期的时间戳。我不再使用时间戳来避免这个问题。