我遇到过似乎是Firefox的奇怪结果。使用以下格式:
2013/01/01 00:00:00-0000
对于我的约会,当时区变为“积极”时,我遇到了一个问题。例如。
new Date('2013/01/01 05:00:00-0000')
Date { Tue Jan 01 2013 00:00:00 GMT-0500 (EST) }
但是
new Date('2013/01/01 05:00:00+0100')
Date { Invalid Date }
我希望得到:
日期{2012年12月31日星期一23:00:00 GMT-0500(EST)}
+
似乎是导致问题的原因,如果我不能在GMT以东使用时区,这似乎是一个非常大的问题。
编辑:添加了http://jsfiddle.net/utm4f/
在Firefox中运行,它将返回无效日期(我在OS X 10.8.3上运行Firefox 20)
答案 0 :(得分:0)
好吧,我发现了这个问题,尽我所能。显然,Firefox需要时间和时区之间的空格。
new Date('2013/01/01 05:00:00 +0100')
new Date('2013/01/01 05:00:00 -0100')
如果没有空格,-
时区就不会出错,但+
时区会出错。
答案 1 :(得分:0)
您可能希望使用ISO8601值,例如:
2013-12-31T01:23:45-07:00
解析ISO日期将适用于所有较新的浏览器,但在某些较旧的浏览器上失败,最明显的是IE8。有一个关于此here的浏览器支持的优秀描述,以及旧浏览器支持的垫片。
但是如果你真的想支持不同浏览器中的所有不一致,最好的方式(恕我直言)是moment.js。
var m = moment('2013-12-31T01:23:45-07:00');
甚至使用其他格式,使用显式解析字符串:
var m = moment('2013/01/01 00:00:00-0000', 'YYYY/MM/DD HH:mm:ssZZ');