js中月的范围是0-11,你赋值为12的时候,就自动加一个月了,所以是1990年1月(month的值是0)

解决方案 »

  1.   

    如果想new日期要这样:var a = new Date(iY, iM-1, iD);
    结果才是你想要的.
      

  2.   

    是程序写得有问题!!!var m = a.getMonth();改为,就一切 OK!var m = a.getMonth() - 1;
      

  3.   

    忘了说了,JS 会自动进位的,1989 13 32 虽然有悖常理,但是 JS 同样可以处理的!
      

  4.   

    var m = a.getMonth();改为,就一切 OK!var m = a.getMonth() - 1;------------------------------------------------
    按照yixianggao(你我他,三人行必有我师焉!) 的方法改正后,出现的结果的月份为-1。?  如果想new日期要这样:var a = new Date(iY, iM-1, iD);
    结果才是你想要的
    ---------------------------------------
    按照这种方法是11,而不是12现在出现这个问题,这到底是什么原因呢?怎么解决亚?
      

  5.   

    我的测试代码:
    <script language="JavaScript" type="text/javascript">
    var a= new Date(1989,12,12);
    var y=a.getFullYear();
    var m= a.getMonth()-1;
    var d=a.getDate();
    alert(y);
    alert(m);
    alert(d);
    </script>
      

  6.   

    我按照大家提供的方法,写了以上的测试代码后,突然又想到会不会是a的错误呢,通过Date处理以后会不会不正确呢?我重新写了测试代码,测试的结果是:
    Fri Jan 12 00:00:00 UTC+0800 1990,也是输入1989 12 12后,自动根据中国的时区改成了1990年1月12日。这个不符合我的要求,该怎么改正呢?
      

  7.   

    不知道是不是你要的结果:
    <script language="JavaScript" type="text/javascript">
    var a= new Date(1989,11,12);
    var y=a.getFullYear();
    var m= a.getMonth()-1;
    var d=a.getDate();
    alert(y);
    alert(m);
    alert(d);
    alert(a.toLocaleString());
    </script>
      

  8.   

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

  9.   

    谢谢各位,我实际上在写身份证验证代码时遇到这个问题的,现在这个问题已经得到解决,我将最终代码放到blog里了。直接访问地址:http://blog.csdn.net/redcn2004/archive/2007/05/31/1632468.aspx
     
    再次感谢各位!