2013-02-19 20 views
0

我有一個日期選擇器,通過它我可以通過javascript獲取日期。未在Firefox中運行的日期函數

var tmpEarTxt = document.getElementById('<%=txtEarDate.ClientID %>'); 

當我將日期遞增30天時,mozilla瀏覽器給出了NaN-Nan-0NaN。但是,它的工作正常。這裏是我的代碼:

var dtVal = new Date(tmpEarTxt.value); 
dtVal.setDate(dtVal.getDate() + 30); 

我該如何解決這個問題?

+0

規格之外的值在1-31範圍之外是違法的。 – 2013-02-19 07:51:55

+0

可能的重複http://stackoverflow.com/questions/9033625/date-function-in-javascript-giving-nan-nan-nan-in-firefox-and-chrome-while-wor – coder 2013-02-19 07:52:28

回答

0

超出1-31範圍的值作爲Date#setDate的參數是非法的。您可以使用Date#setTimeDate#getTime代替:

var TI_DAY = 1000*60*60*24; //convenience constant; use any notation you like 
/// 
var dtVal = new Date(tmpEarTxt.value); 
dtVal.setTime(dtVal.getTime() + 30 * TI_DAY); 

另外,還要確保你傳遞正確的字符串到日期的構造。請參閱Date.parse和參考specification以獲取有效格式的列表。

以下格式是允許的。因爲ES1的第一個作品,後者那些只因爲ES5工作(線2 &在IE8測試,不支持5):

Mon, 25 Dec 1995 13:30:00 GMT 
1997-07-16T19:20:30.45+01:00 
1997-07-16T19:20:30+01:00 
1997-07-16T19:20+01:00 
1997-07-16     (year-month-day) 
1997-07 
1997 

所以,只有new Date("25 Dec 1995")作品隨處可見(在IE8,IE9,FF測試,鉻)
new Date("1995-12-25")作品隨處可見,除了IE瀏覽器(IE8中,IE9,FF測試,鉻)
new Date("12-25-1995")作品在Chrome和IE,但不能在Firefox。 此外,IE(但不是Chrome)允許日期和月份溢出,遞增下一個最大的度量值,但當解析最後一種格式(不被MDN認可的格式)時,只有。它甚至可以讓年份降到1900以下。

+0

不過,它不工作Mozilla的。 – user1844205 2013-02-21 15:08:58

+0

@ user1844205也許您還有其他問題,並且不在您發佈的代碼中。 – 2013-02-21 15:11:47

+0

我只是這個代碼,它的運行完美的鉻,但不是在Firefox中 – user1844205 2013-02-21 15:15:26