哪里有错 ? 
function   strDateTime(str)   
  {   
        if(str=="")   return   false;   
        var   r   =   str.match(/^(\d{4})(-)(\d{2})\2(\d{2})$/);     
        if(r==null)return   true;     
        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]);   
  } 

解决方案 »

  1.   


    <script>
    function  strDateTime(str)  
      {  
    if(str=="")  return  false;  
    var  r  =  str.match(/^(\d{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( strDateTime('2008-3-3') ) ;
    </script>我猜测你的这个 strDateTime 的含义: 验证传入的字符串是否是正确的日期格式的字符串!返回 false 就表示不是,返回 true 就表明是。
    当传入的字串的格式为 YYYY-MM-dd 或者 YYYY-MM-d 或者 YYYY-M-dd 或者 YYYY-M-d 时,就表明是符合要求的。
      

  2.   

    如果只是想要判断是不是正确的时间格式 可以直接强转 把强转的代码用try catch 包起来 
      

  3.   

    return  !(d.getFullYear()==r[1]  &&  (d.getMonth()+1)==r[3]  &&  d.getDate()==r[4]);  
      

  4.   

    var  r  =  str.match(/^(\d{4})(-)(\d{1,2})\2(\d{1,2})$/);    if(r==null)return  false; 
    这2句换个位子,看看!