function  isTime(elem){
  var pattern/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/
;
  var temp=elem.match(pattern);
  if(temp==null) return false;
  //date(year,month,date, hour,minutes,seconds)
  var d=new Date(temp[1],temp[3]-1,temp[5],temp[7],temp[9],temp[11]);
  return d.getFullYear()==temp[1]&&
    (d.getMonth()+1)==temp[3]&&
     d.getDate()==temp[5]&&
     d.getHours()==temp[7]&&
     d.getMinutes()==temp[9]&&
     d.getSeconds()==temp[11];
 }

解决方案 »

  1.   

    刚才的有问题这个
    <script language=javascript>
    String.prototype.isDate = function()
    {
       var r = this.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]); 
       return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }
    alert("2002-01-31".isDate());
    alert("2002-01-41".isDate());
    </script>
      

  2.   

    你这么说就有点犯难了
    因为,很多种格式的字符串都可以用来表示时间,总不能一个个都来匹配一下看是不是合法吧.
    而且只有少数几种格式的字符串可以转化成Date对象.
    所以你最好就是能确定一下表示时间的字符串的格式,然后才好进行校验
      

  3.   

    日期格式输入验证
    http://www.soeye.cn/article/2006-3/176.html
      

  4.   

    最简单的是用 Date.parse() 当然,对于有格式规律可言的你可以用 isDate 或者 isTime 的解决法