2012-03-28 27 views
5

我想从字符串创建一个新的Date对象如下不同的结果:的JavaScript字符串新的Date对象,在IE和FF

var myDate= new Date("1985-01-01T00:00:00.000-06:00"); 

在Firefox,它会提醒以下

星期二1985年1月1日00:00:00 GMT-0600(中部标准时间)

在IE8,它会提醒以下

NaN的

为什么IE浏览器出毛病了这条路?

+0

可能重复(http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok ) – 2012-03-28 16:46:39

+1

因为IE8不支持这种格式。就那么简单。 – BalusC 2012-03-28 16:47:05

+0

嗨balusC,什么是最简单的方式创建一个与字符串为IE浏览器的日期? – user1195192 2012-03-28 16:52:37

回答

5

展望documetation正确的格式如下:

new Date(year, month, day [, hour, minute, second, millisecond ]) 

所以,如果你运行下面的代码会被罚款在所有浏览器:

var myDate= new Date(1985, 01, 01 , 00, 06, 00, 0000000000); 
myDate // you get the right date in all browsers IE8/7 included 
+0

这将不会得到正确的日期,因为ie8计数月从'0'而不是'1',所以'新日期(1985,01,01,06,00,000000000000)'得到2月不是6月,你需要减少1当你过去的月份参数 – 2014-04-10 06:37:53

2

尝试moment.js为您所有的JS日期困境。

+0

你可以给出如何使用moment.js来回答问题的代码示例吗? – JustinStolle 2013-09-02 21:06:48

+0

@JustinStolle var myDate = moment('1985-01-01T00:00:00.000-06:00'); – dontGoPlastic 2013-09-03 00:43:01

0

的格式不被支持IE浏览器。也许你可以尝试使用setUTCHours

var rawdate = new Date("1985/01/01 00:00:00 GMT"); 
console.log(rawdate); 
    //=> in my timezone: Tue Jan 1 01:00:00 UTC+0100 1985 
console.log(rawdate.setUTCHours(-6)); 
    //=> in my timezone that results in: Mon Dec 31 19:00:00 UTC+0100 1984 

或者,也许你的意思是(在IE的作品,而不是在其他浏览器)?

var rawdate = new Date("1985/01/01 00:00:00 GMT-6"); 
    //=> Tue Jan 1 07:00:00 UTC+0100 1985 
的[在IE,NAN JavaScript的日期 - Firefox和铬OK]