【发布时间】:2014-08-23 10:10:34
【问题描述】:
我已将系统时间设置为 UTC。
IE 10
new Date("2014-06-07T19:00:00") //6 月 7 日星期六 19:00:00 UTC+0100 2014
铬 35
new Date("2014-06-07T19:00:00") //2014 年 6 月 7 日星期六 20:00:00 GMT+0100(GMT 夏令时间)
为什么结果相差 1 小时?日期构造函数是规范的一部分,所以它应该是跨浏览器的标准?
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.3.2
http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
缺席时区偏移的值为“Z”。
(我已经想出了如何解决这个问题 - 附加时区“Z” - “2014-06-07T19:00:00Z”会产生一致的结果,但我很感兴趣的是为什么会首先发生这种情况)
编辑:
@Dark Falcon 是的,toISOString 为下面的第一个字符串产生不同的结果
<p id=container></p>
container.innerHTML =
new Date("2014-06-07T19:00:00").toISOString() +
'<br>' +
new Date("2014-01-07T19:00:00").toISOString() +
'<br>'+
new Date("2014-06-07T19:00:00Z").toISOString();
IE
2014-06-07T18:00:00.000Z
2014-01-07T19:00:00.000Z
2014-06-07T19:00:00.000Z
铬
2014-06-07T19:00:00.000Z
2014-01-07T19:00:00.000Z
2014-06-07T19:00:00.000Z
编辑:
不确定这是否与 new Date() works differently in Chrome and Firefox 重复,我不是在问如何解决问题,我是在问为什么首先会有差异。该问题的公认答案是“您的输入错误”。第二个答案说“规范不精确”。我认为两者都不正确 - 请注意我在规范中的引用“缺席时区偏移的值是“Z”。
【问题讨论】:
-
您如何获得 cmets 中的日期值?听起来这可能是您如何显示它的问题,而不是如何解析它。请注意,它可能被正确解析但显示不正确,或者至少在浏览器之间不一致。你用
toISOString了吗? -
@Andy:很明显,一个日期是BST,另一个是GMT;问题是为什么它们不是格林威治标准时间。
-
@mason:链接位于问题顶部的框中,以“此问题已在此处有答案:”开头。如果您没有看到该框,请截屏并在Meta Stack Overflow 提交错误。尝试重新加载页面。
标签: javascript date cross-browser