【发布时间】:2018-06-14 12:07:01
【问题描述】:
在年初查看日期对象的 valueOf 值时,我希望总是收到零秒。 以下代码显示,直到 1917 年,chrome 中的偏移量为 54 秒或 40 秒。在 IE 中,我所有年份都收到 0 秒。
这是有原因的吗?它似乎只发生在最后一个 chrome 版本中
for(var i=0; i<2020;i++)
if(!new Date(i,0,1).valueOf().toString().match("00000$"))
console.log({
y:i,
s: new Date(i,0,1).valueOf().toString().match(/(\d{2})\d{3}$/)[1]})
【问题讨论】:
-
因此,换句话说:
new Date(1915, 0, 1, 0, 0, 0).toUTCString()导致"Thu, 31 Dec 1914 22:36:00 GMT"(Chrome 67.0.3396.87)。这真的很奇怪,我认为这是一个错误。你举报了吗? -
在 Windows 上的 Chrome 67.0.3396.87 中
new Date(1915, 0, 1, 0, 0, 0).toUTCString()返回"Fri, 01 Jan 1915 00:00:00 GMT" -
@KrzysztofGrzybek 作为旁注:
new Date(1915, 0, 1, 0, 0, 0)给出输出“Fri Jan 01 1915 00:00:00 GMT+0124”,差异确实是 1 小时 24 分钟。同样getTimezoneOffset返回 -84(1 小时 24 分钟) -
这是 Chrome 67 引入的一个烦人的错误。它似乎想使用从历史数据中插入的某种插值时区(您可以在 timeanddate.com 中查看到 1800 年的历史时区),这就是将这些分钟班次添加到日期中。
-
大家:这不是错误。这几乎发生在每个时区,并且这些值已经在 tz 数据库中存在了近三年。如果您的代码无法处理 ~1883–1914 之前的值,那么我向您保证,您的代码在夏令时转换和时区数据更改方面也不正确,今天,对于真实的非历史值.
标签: javascript google-chrome datetime