根据维基百科的ISO-8601文章(我知道,来源不好)......
如果没有给出时间表示的UTC关系信息,则假定时间是当地时间。
所以,例如......给出:
我希望“a”和“b”是本地时间(浏览器的时区),而“c”是UTC。但是,a,b和c都是等价的(1332288000000)。所有值都被解析为UTC。
ECMAScript规范也清楚地说明了这一点:
15。9。15。15日期时间字符串格式
缺席时区偏移的值为“Z”。
为什么会出现这种差异?维基百科不正确还是ECMAScript规范?如何在浏览器中将ISO-8601字符串解析为本地时间(不知道浏览器的时区)?
答案 0 :(得分:2)
是的,ES5.1不正确。
ECMAScript 6草案现在说"如果没有时区偏移,则日期时间被解释为当地时间。"
答案 1 :(得分:1)
如何在浏览器中将ISO-8601字符串解析为本地时间(不知道浏览器的时区)?
使用toLocaleString
方法执行此操作:
var foo = new Date("2012-03-21").toLocaleString()
var bar = new Date("2012-03-21T00:00").toLocaleString()
var baz = new Date("2012-03-21T00:00Z").toLocaleString()
<强>参考强>