2012-03-28 53 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]