判断日期:
function isDateString(sDate)
{   
var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
    var iaDate = new Array(3);
    var year, month, day;

    if (arguments.length != 1) return false;
    iaDate = sDate.toString().split("-");
    if (iaDate.length != 3) return false;
    if (iaDate[1].length > 2 || iaDate[2].length > 2) return false;

    year = parseFloat(iaDate[0]);
    month = parseFloat(iaDate[1]);
    day=parseFloat(iaDate[2]);

    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;
    return true;
}

解决方案 »

  1.   

    不过最好是用正则表达式判断。
    http://www.52sdn.com/artid/417/417664.html
    http://azhong.sun-liner.com/article.asp?id=49
      

  2.   

    我弄了个例子,楼主看看。<script>
    function isDate() 

    var v=document.all["date"].value;
    var patrn=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/; 
    if (!patrn.exec(v)) 
    alert('非法')
    else
    alert('合法')
    } ---以下判断包括时间
    function isDate1() 

    var v=document.all["date1"].value;
    var patrn=/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/; 
    if (!patrn.exec(v)) 
    alert('非法')
    else
    alert('合法')
    }
    </script>
    <body>
    判断日期:
    <input type=text size=10 id='date'>
    <input type=button value='test' onclick="isDate();">
    <br>
    判断日期、时间:
    <input type=text size=20 id='date1'>
    <input type=button value='test' onclick="isDate1();">
    </body>
      

  3.   

    楼上的例子有点错误,判断2000-02-29为非法
    判断日期还是下面的方法比较简便:function isDate( s ) {
    var r = s.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
        if( r == null ) return false;
    var d = new Date( r[1], r[3]-1, r[4] ); 
        if( ! ( d.getFullYear() == r[1] && ( d.getMonth()+1 ) == r[3] && d.getDate() == r[4] ) ) return false;
    return true;
    }我就是不知道时间和日期时间怎么判断,正则表达式不会用啊(上面的方法也是从网上找到的),请高手指教,最好有个现成的函数!!!
      

  4.   

    现成的正则有很多
    date
    ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578]
    )|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[4
    69])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\
    s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([1
    3579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((
    0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((
    0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9]
    )|(2[0-8])))))) 
      
    time
    ^((2[0123])|([01]\d)|\d):(([0-5]\d)|\d)(:(([0-5]\d)|\d))?$你可以在网上找个自己需要的
      

  5.   

    <script language="JavaScript">
    <!--
    var strTime = "03:33:34";
    var strDate = "2004-1-22 " + strTime;
    String.prototype.parseIntArray = function(){
    var ar = this.match(/\d+/g);
    if(!ar) return null;
    for(var i=0;i<ar.length;i++)
    ar[i] = parseInt(ar[i],10);
    return ar;
    }
    String.prototype.isValidTime = function(){
    var reg = /^\d{1,2}:\d{1,2}:\d{1,2}$/;
    if(!reg.test(this)) return false;
    var ar = this.parseIntArray();
    if(ar[0]<24 && ar[1]<60 && ar[2]<60) return true;
    return false;
    }
    String.prototype.isValidDate = function(){
    var reg = /^\d{4}-\d{1,2}-\d{1,2}$/;
    if(!reg.test(this)) return false;
    var ar = this.parseIntArray();
    var d = new Date(this.replace("-","/"));
    if(d.getFullYear() == ar[0] && (d.getMonth()+1) == ar[1] && d.getDate() == ar[2]) return true;
    return false;
    }
    String.prototype.isValidDateTime = function(){
    var ar = this.split(" ");
    if(!ar || ar.length!=2) return false;
    //alert(ar[0].isValidDate());
    //alert(ar[1].isValidTime());
    return (ar[0].isValidDate()&&ar[1].isValidTime());
    }
    alert(strTime.isValidTime());
    alert(strDate.isValidDateTime());
    //-->
    </script>