var d = "2014-04-22";
var t = "00:00";
var o = new Date(d + "T" + t);
Firefox会生成正确的日期:Tue Apr 22 2014 00:00:00 GMT+0200 (CEST)
Tue Apr 22 2014 02:00:00 GMT+0200 (CEST)
如果我用空格替换T
,则Chromes o
包含正确的日期,但它在Firefox中为Invalid Date
。
如何让两个浏览器使用正确的日期?
编辑: t = "00:00:00.000Z"
会在两个浏览器中产生Tue Apr 22 2014 00:00:00 GMT+0200 (CEST)
,但这是错误的日期。
编辑: t = "00:00:00.000+02:00"
会产生正确的时间,但是时区无法从浏览器运行的计算机上自动获取?
答案 0 :(得分:1)
请参阅Date.Parse文档和ISO8601的文档。
Chrome和Firefox似乎确实以不同方式处理时区。在我的测试中,如果你附加一个明确的时区指示符,它们表现得很好。要么" Z" (UTC的特殊标记)或"+hh:mm"
,具体取决于您想要的输出。
如果你想拥有一个更灵活的日期解析器(这对许多其他东西很有用),你可以使用某种类型的库 - MomentJS或DateJS可以很好地完成。选择哪个取决于个人偏好以及除此之外你所做的事情的细节。
编辑:我的原始答案是错误的,因为ISO8601确实只接受HH:MM,Chrome和Firefox对非时区指定的代码确实有不同的行为。