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)

另一方面,Chrome产生: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"产生正确的时间,但是不能从运行浏览器的计算机上自动获取时区吗?

最佳答案

请参阅Date.Parse文档和ISO8601文档。

Chrome和Firefox在处理时区方面似乎有所不同。在我的测试中,如果您添加了明确的时区指示符,则它们的表现很好。 “ Z”(UTC的特殊标记)或"+hh:mm",取决于所需的输出。

如果您想要一个更灵活的日期解析器(这对许多其他事情很有用),则可以使用某种类型的库-MomentJSDateJS都可以很好地做到这一点。选择哪种方法取决于个人喜好以及除此之外的具体操作。

编辑:我的原始答案是错误的,因为ISO8601确实只接受HH:MM,而Chrome和Firefox对于非时区指定的代码确实有不同的行为。

关于javascript - 字符串中的日期在不同的浏览器中产生不同的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23207031/

10-12 13:58