超出1-31範圍的值作爲Date#setDate
的參數是非法的。您可以使用Date#setTime
和Date#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以下。
規格之外的值在1-31範圍之外是違法的。 – 2013-02-19 07:51:55
可能的重複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