2010-08-25 66 views
10

我使用日期在一个RSS feed,但我发现不同的结果在IE中使用下面的代码时,Chrome和Firefox:问题在JavaScript中的日期格式不同的浏览器

new Date('2001-01-01T12:00:00Z') 

Firefox是满意那,但Chrome和IE返回无效日期。

我想我会尝试更换T和Z值如下:

new Date('2001-01-01 12:00:00') 

这次Chrome是满意了,但Firefox和IE浏览器返回无效的日期。

任何想法我应该怎么做才能在这种格式的所有浏览器中获取日期对象?

非常感谢, 添

回答

23

此工程在我的盒子所有的浏览器 - 尝试在控制台:

alert(new Date('2001/01/31 12:00:00')) 

所以

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' ')) 

IE8,FF3.6,Safari4的,铬

+1

你是对的,这是有效的,这是比我的更好的解决方案。 – NicolasT 2010-08-25 13:24:26

+0

非常感谢!在IE,FF,Chrome和Opera上测试并为我工作! – TimS 2010-08-31 08:34:33

+0

如何使用时区对FF进行此项工作?因为这个'new Date('2001-01-01T12:00:00 + 1000'.replace(/ \ -/g,'\ /')。replace(/ [T | Z]/g,''))返回在FF中无效的日期,但在IE/Chrome中工作 – 2016-08-22 12:35:25

1

你可以尝试:

new Date(2001,0,1,12,0,0) 

这意味着:

new Date(year,month,day,hour,minutes,seconds) 
+3

你的意思是 新的日期(2001,0,1,12,0,0) 因为JS个月从0开始 – mplungjan 2010-08-25 13:37:19

+0

我会编辑,你说得对 – NicolasT 2010-08-25 13:52:21

+0

小心前导零。 08和09是无效的八进制数字 – mplungjan 2010-08-25 14:05:05

3

您也可以尝试使用Date.js - 一个开源的JavaScript日期处理库。

+0

优秀的建议!谢谢 – TimS 2010-08-31 08:35:39

+0

此外,momentjs(www.momentjs.com)消除了浏览器的差异。 – Quango 2013-06-17 11:40:12

3

这适用于所有主要的5个浏览器,并导致所有浏览器识别时间GMT/UTC而不是本地时间(在Z后缀意味着时间是UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0')) 

我感谢mplungjan为他的答案。