根据维基百科的ISO-8601文章(我知道,不好的来源)...
如果没有给出带有时间表示的 UTC 关系信息,则假定时间为本地时间。
所以,例如..给定:
- var a = Date.parse("2012-03-21");
- var b = Date.parse("2012-03-21T00:00");
- var c = Date.parse("2012-03-21T00:00Z");
我希望“a”和“b”是本地时间(浏览器的时区),而“c”是 UTC。但是,a、b 和 c 都是等价的 (1332288000000)。所有值都被解析为 UTC。
ECMAScript 规范也明确说明了这一点:
15.9.1.15 日期时间字符串格式
缺席时区偏移的值为“Z”。
为什么会出现这种差异?维基百科不正确还是 ECMAScript 规范不正确?如何将 ISO-8601 字符串解析为浏览器中的本地时间(不知道浏览器的时区)?