<script>
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
var r = str.match(reg); 
if(r==null)return false; 
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()
return newStr==str
}
alert(strDateTime("2002-1-31 12:34:56"))
alert(strDateTime("2001-2-29 12:54:56"))
alert(strDateTime("2002-1-41 12:00:00"))
</script>

解决方案 »

  1.   

    to meizz(梅花雨) 你真是我的偶像,能不能帮忙解释一下啊
    主要是
    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
    var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()
    这个部分啊,谢谢
      

  2.   

    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
    var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()这部分是将传进来的STR里的各部分拆分后得到一个数组,
    再用这些值组成一个新的日期对象 var d = new Date();
    然后从中用get方式取出元素,若能正确取出则表示STR是一个合法的时间格式。