日期:2014-05-16  浏览次数:20522 次

这是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>