在js里數據類型是弱定義的﹐并沒有明確的日期型﹐不過要判斷字串是否符合日期型可以這樣function isDate(str){
var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g; 
var r = reg.exec(str); 
if(r==null){return false;}
var d = new Date(r[1], r[3]-1,r[5]); 
//以下是為了兼容2000/02/02這種前面補零的
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
var reg=/(\/|-)(0*)( *)([1-9])/g
var t=s.value.replace(reg,'$1$4')
if (newStr==t){return true;}
return false;
}

解决方案 »

  1.   

    2.1 短时间,形如 (13:04:06)
          function isTime(str)
          {
            var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
            if (a == null) {alert('输入的参数不是时间格式'); return false;}
            if (a[1]>24 || a[3]>60 || a[4]>60)
            {
              alert("时间格式不对");
              return false
            }
            return true;
          }
      2.2 短日期,形如 (2003-12-05)
          function strDateTime(str)
          {
             var r = str.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]);
          }
      2.3 长时间,形如 (2003-12-05 13:04:06)
          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]); 
            return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
          }