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

本文提供了一组用于验证日期和时间格式正确性的JavaScript函数。包括检查短时间格式、短日期格式、长时间格式,以及两个日期之间的大小比较等实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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;
}

  1. 短日期,形如 (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,1}\s*$/ 或者:

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

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

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

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

作者:邢庆
原文:https://blog.youkuaiyun.com/itxiaohei323/article/details/7916598


  1. 0-9 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值