首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

这是getFullYear()的bug吗?该怎么解决

2012-04-12 
这是getFullYear()的bug吗?我找了一个验证日期的函数,如下:functionisValidDate(iY,iM,iD){varanewDate(i

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

热点排行