<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]);
         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]);
       }
   alert(strDateTime("2008-5-1 9:15:13"))
   alert(strDateTime("2008-05-1 9:15:13"))
   alert(strDateTime("2008-05-32 9:15:13"))
</script>

解决方案 »

  1.   


    //有效日期判断函数IsValidDate()
    function IsValidDate(psYear, psMonth, psDay)
    {
    if(psYear==null || psMonth==null || psDay==null)
    {
    return false;
    } var sYear  = new String(psYear);
    var sMonth = new String(psMonth);
    var sDay   = new String(psDay); if(IsValidYear(sYear)==false)
    {
    return false;
    } if(IsValidMonth(sMonth)==false)
    {
    return false;
    } if(IsValidDay(sDay)==false)
    {
    return false;
    } var nYear  = parseInt(sYear,  10);
    var nMonth = parseInt(sMonth, 10);
    var nDay   = parseInt(sDay,   10); if(sYear=="" &&  sMonth=="" && sDay=="")
    {
    return true;
    } if(sYear=="" || sMonth=="" || sDay=="")
    {
    return false;
    }
       
    if(nMonth < 1 || 12 < nMonth)
    {
    return false;
    }
    if(nDay < 1 || 31 < nDay)
    {
    return false;
    } if(nMonth == 2)
    {
    if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0))
    {
    if((nDay < 1) || (nDay > 29))
    {
    return false;
    }
    }
    else
    {
    if((nDay < 1) || (nDay > 28))
    {
    return false;
    }
    }
    }
    else if((nMonth == 1)  ||
    (nMonth == 3)  ||
    (nMonth == 5)  ||
    (nMonth == 7)  ||
    (nMonth == 8)  ||
    (nMonth == 10) ||
    (nMonth == 12))
    {
    if((nDay < 1) || (31 < nDay))
    {
    return false;
    }
    }
    else
    {
    if((nDay < 1) || (30 < nDay))
    {
    return false;
    }
    } return true;


    //有效年份判断函数IsValidYear()
    function IsValidYear(psYear)
    {
    var sYear = new String(psYear); if(psYear==null)
    {
    return false;
    }
    if(isNaN(psYear)==true)
    {
    return false;
    } if(sYear == "")
    {
    return true;
    } if(sYear.match(/[^0-9]/g)!=null)
    {
    return false;
    } var nYear = parseInt(sYear,10); if((nYear < 0) || (9999 < nYear))
    {
    return false;
    } return true;
    } //有效月份判断函数IsValidMonth()
    function IsValidMonth(psMonth)
    {
    var sMonth = new String(psMonth); if(psMonth==null)
    {
    return false;
    } if(isNaN(psMonth)==true)
    {
    return false;
    } if(sMonth == "")
    {
    return true;
    } if(sMonth.match(/[^0-9]/g)!=null)
    {
    return false;
    } var nMonth = parseInt(sMonth,10); if((nMonth < 0) || (12 < nMonth))
    {
    return false;
    } return true;
    } //有效日判断函数IsValidDay()
    function IsValidDay(psDay)
    {
    var sDay  = new String(psDay); if(psDay==null)
    {
    return false;
    } if(isNaN(psDay)==true)
    {
    return false;
    } if(sDay == "")
    {
    return true;
    } if(sDay.match(/[^0-9]/g)!=null)
    {
    return false;
    } var nDay = parseInt(psDay, 10); if((nDay < 0) || (31 < nDay))
    {
    return false;
    } return true;
    }
      

  2.   

    var dStr="2008-5-1 93:15:13".replace(/-/g,"/")
    if(new Date(dStr).toString()=="NaN")alert("时间格式不正确!")
    else alert("时间格式正确!")
      

  3.   

    http://blog.csdn.net/xuStanly/archive/2008/03/16/2186411.aspx
      

  4.   

    function checkDate(dStr)
    {
     dStr=dStr.replace(/-/g,"/")
     if(new Date(dStr).toString()=="NaN")return false;
     else return true;
    }
    //测试用例
    if(!checkDate("2008-5-1 3:15:13"))alert("时间类型错误!=====测试1");
    if(!checkDate("2008-5-100 93:15:13"))alert("时间类型错误!=====测试2");
    if(!checkDate("2008-13-1 93:15:13"))alert("时间类型错误!=====测试3");
      

  5.   

    顶一楼!         var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
    {1,2})\2(\d{1,2  这里的\2是什么意思?
    你那也可验证:strDateTime("2008/5/1 9:15:13"))这种吧!
     如果一楼的兄弟看到,烦麻指点一下迷津
    !谢谢了!
      

  6.   

    function checkDate(dStr)
    {
     dStr=dStr.replace(/-/g,"/")
     if(new Date(dStr).toString()=="NaN")return false;
     else return true;
    }
    5楼解释下正规@
      

  7.   

    其实就是先把字符串转换为创建时间类型可以接受的字符串类型(正确的是以/来分隔年月日),然后转换为时间类型,如果转换失败时是NaN,然后对比下就知道是否为正确的时间类型了
    转换为时间类型这样的话不需要考虑闰年什么的
      

  8.   


    <script>function checkDate(dStr)
    {
     dStr=dStr.replace(/-/g,"/")
     if(new Date(dStr).toString()=="NaN")return false;
     else return true;
    }
    alert(checkDate("2008-5-30 3:15:90"))</script>
    有问题吧?
      

  9.   


    晕,确实有问题...在firefox没问题,在ie下加时间时验证错误,没有时间是对的.....汗.......
      

  10.   

    在firefox自动转换时间,把多出的时间增加,日.........在ie下如果不满足时间类型会return false.........
      

  11.   

    修改一句:var reg=/^\d{1,4}([-|\/])\d{1,2}\1\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}$/;