刚写了一个,符不符合实际需求?<script language="javascript">
var curD = new Date();
var curM = curD.getMonth() + 1;
var curT = curD.getDate() + 1;
var minY = curD.getYear(); //生日只能从本年度开始
var maxY =  minY + 80; 
var arrMaxDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]function checkday(y, m, d){
var maxD = -1;
if (minY > y || maxY < y){
return ("Error! 年份不在区间内");
}
if (m < 1 || m > 12){
return ("Error! 月份不在区间内");
}else{
if (y == minY && m > curM){
return ("Error! 超过当前年月, 生日非法.");
}
} for (var i = 0 ; i < 12; i++){
if (m == (i + 1)){
 if (i == 1) {
if (y % 4 == 0){
maxD = 29;
}else{
maxD = 28;
}
break;
 }else{
maxD = arrMaxDay[i];
 }
 break;
}
}
if (d > maxD || d < 1){
return ("Error! 日期不在区间内");
}else{
if (y == minY && m == curM && d > curT){
return ("Error! 超过当前年月日, 生日非法.");
}
}
return (y + "-" + m + "-" + d);
}var y = 2007; //输入年
var m = 2; //输入月
var d = 29; //输入日
document.write (checkday(y, m, d));
</script>

解决方案 »

  1.   

    错了.:(var maxY  = curD.getYear(); //生日只能从本年度开始
    var minY =  maxY - 80;
      

  2.   

    重写.把当前年弄成最低限额了.这是正确的.<script language="javascript">
    var curD = new Date();
    var curM = curD.getMonth() + 1;
    var curT = curD.getDate() + 1;
    var maxY = curD.getYear(); //生日只能从本年度开始
    var minY =  maxY - 80; 
    var arrMaxDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]function checkday(y, m, d){
    var maxD = -1;
    if (minY > y || maxY < y){
    return ("Error! 年份不在区间内");
    }
    if (m < 1 || m > 12){
    return ("Error! 月份不在区间内");
    }else{
    if (y == maxY && m > curM){
    return ("Error! 超过当前年月, 生日非法.");
    }
    } for (var i = 0 ; i < 12; i++){
    if (m == (i + 1)){
     if (i == 1) {
    if (y % 4 == 0){
    maxD = 29;
    }else{
    maxD = 28;
    }
    break;
     }else{
    maxD = arrMaxDay[i];
     }
     break;
    }
    }
    if (d > maxD || d < 1){
    return ("Error! 日期不在区间内");
    }else{
    if (y == maxY && m == curM && d > curT){
    return ("Error! 超过当前年月日, 生日非法.");
    }
    }
    return (y + "-" + m + "-" + d);
    }var y = 2005; //输入年
    var m = 2; //输入月
    var d = 28; //输入日
    document.write (checkday(y, m, d));
    </script>