1-31 范围之外的值作为 的参数是非法的Date#setDate
。您可以使用Date#setTime
andDate#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 构造函数。有关有效格式的列表,请参阅Date.parse
参考规范。
允许使用以下格式。第一个从 ES1 开始工作,后者只从 ES5 开始工作(在 IE8 中测试的第 2 行和第 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、Chrome
new Date("1995-12-25")
中测试)除了 IE(在 IE8、IE9、FF、Chrome 中测试)
new Date("12-25-1995")
在 Chrome 和 IE 中有效,但在 Firefox 中无效。此外,IE(但不是 Chrome)允许日和月溢出,增加下一个最大的度量,但仅在解析最后一种格式(MDN 未认可的格式)时。它甚至让年份降至 1900 以下。