这是getFullYear()的bug吗?
我找了一个验证日期的函数,如下:
function isValidDate(iY, iM, iD)
{
var a = new Date(iY, iM, iD);
var y = a.getFullYear();
var m = a.getMonth();
var d = a.getDate();
if (y != iY || m != iM || d != iD)
{
// alert(y);
// alert(m);
// alert(d);
window.alert( '日期错误! ');
document.myform.CardNo.focus();
return false;
}
return true;
}
输入参数1989 12 12,跟踪发现y的值为1990 ,而m的值为0,日期的值是对的。请问:这个是getFullYear()的bug吗?
------解决方案--------------------js中月的范围是0-11,你赋值为12的时候,就自动加一个月了,所以是1990年1月(month的值是0)
------解决方案--------------------如果想new日期要这样:var a = new Date(iY, iM-1, iD);
结果才是你想要的.
------解决方案--------------------是程序写得有问题!!!
var m = a.getMonth();
改为,就一切 OK!
var m = a.getMonth() - 1;
------解决方案-------------------- <script language= "JavaScript " type= "text/javascript ">
var a = new Date(1989,11,12); // 构造了个日期:1989-12-12
var y = a.getFullYear(); // 获得年份: 1989
var m = a.getMonth()+1; // 由于月份有别,11==a.getMonth()
var d = a.getDate(); // 获得日期: 12
alert( "查看新构造的日期 : 年_ "+y+ "| 月_ "+m+ "| 日_ "+d);
alert( "a : "+a.toLocaleString());
</script>