<script language="JavaScript">
<!--
function CheckDate(strDate){
var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/;
if(!reg.test(strDate)){
alert("日期格式不正确!\n正确格式为:2004-01-01");
return false;
}
var ss=strDate.split("-");
var year=ss[0];
var month=ss[1];
var date=ss[2];
if(!checkYear(year)){return false;}
if(!checkMonth(month)){return false;}
if(!checkDate(year,month,date)){return false;}
return true;
}
function checkYear(year){
if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;}
else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false}
else return true;
}
function checkMonth(month){
if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;}
else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false}
else return true;
}
function checkDate(year,month,date){
var daysOfMonth=CalDays(parseInt(year),parseInt(month));
if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;}
else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;}
else return true;
}
function CalDays(year,month){
var date= new Date(year,month,0);
return date.getDate();
}
function isLeapYear(year){
if((year %4==0 && year %100!=0) || (year %400==0)) return true;
else return false;
}
alert(CheckDate("2007-02-29"));
//-->
</script>

解决方案 »

  1.   

    function isNumberStrictly(str) {
    var strSource ="0123456789";
    var ch;
    var i;
    var temp;

    for (i=0;i<=(str.length-1);i++) {
    ch = str.charAt(i);
    temp = strSource.indexOf(ch);
    if (temp==-1) {
    return false;
    }
    }
    return true;
    }
    function isDateTimeString(sDate) {
    var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
    var iaDate = new Array(5);
    var year, month, day, hour, minute, second;
    if (sDate.length != 19) return false;
    iaDate[0] = sDate.charAt(0) + sDate.charAt(1) + sDate.charAt(2) + sDate.charAt(3);
    iaDate[1] = sDate.charAt(5) + sDate.charAt(6);
    iaDate[2] = sDate.charAt(8) + sDate.charAt(9);
    iaDate[3] = sDate.charAt(11) + sDate.charAt(12);
    iaDate[4] = sDate.charAt(14) + sDate.charAt(15);
    iaDate[5] = sDate.charAt(17) + sDate.charAt(18);
    year = parseFloat(iaDate[0]);
    month = parseFloat(iaDate[1]);
    day = parseFloat(iaDate[2]);
    hour = parseFloat(iaDate[3]);
    minute = parseFloat(iaDate[4]);
    second = parseFloat(iaDate[5]);
    if (sDate.charAt(4) != "-"  ||  sDate.charAt(7) != "-") return false;
    if (sDate.charAt(10) !== " ") return false;
    if (sDate.charAt(13) != ":" ||  sDate.charAt(16) != ":") return false;
    if (isNumberStrictly(iaDate[0]) == false) return false; 
    if (isNumberStrictly(iaDate[1]) == false) return false;
    if (isNumberStrictly(iaDate[2]) == false) return false;
    if (isNumberStrictly(iaDate[3]) == false) return false;
    if (isNumberStrictly(iaDate[4]) == false) return false;
    if (isNumberStrictly(iaDate[5]) == false) return false;
    if (year < 1900 || year > 2100) return false;
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
    if (month < 1 || month > 12) return false;
    if (day < 1 || day > iaMonthDays[month - 1]) return false;
    if (hour > 23 || hour < 0) return false;
    if (minute > 59 || minute < 0) return false;
    if (second > 59 || second < 0) return false;
    return true;
    }