js判断时间格式及时间大小

来源:互联网 发布:mac上卸载程序 编辑:程序博客网 时间:2024/05/17 23:23

http://blog.csdn.net/itxiaohei323/article/details/7916598

检查格式2003-9-9 23:11:23

<input type="text" value="2003-9-9 23:11:23" id="inputtime">
<input type="button" onclick="changev()" value="click">
<script>
      function changev(){
            var aaa=inputtime.value
            ttt=aaa.match(/\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}/)
           if(ttt==null) alert("error");else alert("ok");
     }
</script>

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. 短日期,形如 (2008-07-22)
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]);
}

3 长时间,形如 (2008-07-22 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]);
}

/**

判断时间大小

sdate1: 开始时间

edate2: 结束时间

return: true/false

**/
    function checkDate(sdate1,edate2){
       if(sdate1!=""&&edate2!="")
       { //输入不为空时;
           // 对字符串进行处理
           // 以 - / 或 空格 为分隔符, 将日期字符串分割为数组
          var date1 = sdate1.split("-");
          var date2 = edate2.split("-");
           // 创建 Date 对象
           var myDate1 = new Date(date1[0],date1[1],date1[2]);
           var myDate2 = new Date(date2[0],date2[1],date2[2]);
           
           // 对日起进行比较
           if (myDate1 <= myDate2)
           {
                return true;
           }else
           {
             alert ("提示: 开始时间不能大于结束时间!");
             return false;
           }
       }
       else
       {
             return true;
       }
     }
     /**
        判断日期格式 2000-01-01
        strDate:检测的日期格式
        return: true/false
     **/
     function   isDate(strDate){ 
        var   strSeparator = "-";   //日期分隔符 
        var   strDateArray; 
        var   intYear; 
        var   intMonth; 
        var   intDay; 
        var   boolLeapYear; 
        //var strDate=form1.a.value   //表单中的日期值
        strDateArray = strDate.split(strSeparator); 
         
        if(strDateArray.length!=3)    {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   }
         
        intYear = parseInt(strDateArray[0],10); 
        intMonth = parseInt(strDateArray[1],10); 
        intDay   =   parseInt(strDateArray[2],10); 
         
        if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay))   { alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false; }
         
        if(intMonth>12||intMonth<1) {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   } 
         
        if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1))   {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   } 
         
        if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1))   {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   }
         
        if(intMonth==2){ 
              if(intDay<1)   {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   }
               
              boolLeapYear   =   false;  
            if((intYear%4==0 && intYear %100!=0)||(intYear %400==0))
    {
    boolLeapYear=true;
    }
               
              if(boolLeapYear){ 
                    if(intDay>29) {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   }
              } 
              else{ 
                    if(intDay>28) {   alert('提示: 日期格式错误! \r\n 请依【YYYY-MM-DD】格式输入!'); return   false;   }
              } 
        } 
         
        return   true; 
}

 

 

附注:

 如果是24小时制的(23:59的格式):re = /^([01][0-9]|2[0-3])\:[0-5][0-9]$/

如果还带秒数的(23:59:59的格式):re = /^([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]$/

如果前后有空格的也要匹配的:re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]\s*$/

如果24小时制的,要秒数不要秒数都可以的,并且前后还可以加空格的:

re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9](\:[0-5][0-9]){0,1}\s*$/     或者:

re = /^\s*([01][0-9]|2[0-3])\:[0-5][0-9](\:[0-5][0-9])?\s*$/

 

 

 

判断全格式时间的正确性:

如:2012-03-04 23:09:00

^[0-9]{4}-[0-9]{2}-[0-9]{2}\s+([01][0-9]|2[0-3])\:[0-5][0-9]\:[0-5][0-9]$

0 0
原创粉丝点击