日期函数未在Firefox中运行

时间:2013-02-19 07:49:23

标签: javascript

我有一个日期选择器,通过它可以通过javascript获取日期。

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

当我将日期增加30天时,mozilla浏览器会给出NaN-Nan-0NaN作为结果。但是,它的铬工作正常。这是我的代码:

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

如何解决此问题?

1 个答案:

答案 0 :(得分: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构造函数。有关有效格式列表,请参阅Date.parse和引用的specification

允许使用以下格式。第一个工作自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中测试过)
除了IE(在IE8,IE9,FF,Chrome中测试)之外,new Date("1995-12-25")无处不在 new Date("12-25-1995")适用于Chrome和IE,但不适用于Firefox。 此外,IE(但不是Chrome)允许日期和月份溢出,增加下一个最大的度量,但解析最后一种格式(未经MDN认可的格式)。它甚至让这一年降到1900以下。