日期时间校验Javascript脚本

该博客为转载内容,转载自https://www.cnblogs.com/jinglelin/archive/2005/07/11/190696.html ,涉及JavaScript相关知识。

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

参考了别人的经验,自己整理过的关于日期时间校验Javascript脚本:
   //去掉两段空格
None.gifString.prototype.Trim 
= function()
None.gif{
None.gif    
return this.replace(/(^\s*)|(\s*$)/g,"");
None.gif}
None.gif
//********************** 方法一 **********************
None.gif//
***************************************************
None.gif//
 名称: CheckDateTime 
None.gif//
 功能; 判断输入的Text是否是合法的日期时间格式;如2004-02-04 20:33/2004-02-04 20:33:22  验证的格式有:yyyy-MM-dd(yyyy-M-d)格式,yyyyMMdd格式 以及 yyyy/MM/dd格式 + HH:mm:ss / H:m:s /HH:mm
None.gif//
 说明: 可以只有日期部分而没有时间部分
None.gif//
 参数: 1:控件的对象   
None.gif//
 返回值:
None.gif//
        如果控件对象的值为空串,定义校验通过,           返回true
None.gif//
        如果字串符合,校验通过                            返回true
None.gif//
        如果字串不符合,                                 返回false    
None.gif//
 作者: lsj
None.gif//
 添加时间: 2005-07-11
None.gif//
 用法:
None.gif//
      var DateControl = document.getElementById('txtDate') ;
None.gif//
         if(CheckDateTime(DateControl) == false)  {  return false ;  }    
None.gif//
****************************************************
None.gif
function CheckDateTime(dateControlName)
None.gif{
None.gif     
var strDTCheck = eval(dateControlName).value.Trim() ;
None.gif     
var strDateString = eval(dateControlName).value.Trim();
None.gif     
var strDate;
None.gif     
var strTime;
None.gif     
var strSp = 0;
None.gif     
None.gif     
if (strDateString.length == 0//注意      
None.gif
     {  return true;  }
None.gif          
None.gif     
//取得分隔符" " 的位置 日期部分和时间部分的分隔符             
None.gif
     for (var i=0;i<strDateString.length;i++)
None.gif     {
None.gif        
if (strDateString.substr(i,1== " ")
None.gif        {
None.gif            strSp
=i;
None.gif            
break;
None.gif        }
None.gif     }
None.gif     
//如果没有分隔符" ";日期时间格式错误
None.gif
     if (strSp == 0)
None.gif     {  
//如果没有日期时间分隔符" ",
None.gif
         if(strDTCheck.length <= 10 ) 
None.gif         {  
//如果字符串长度小于等于10,说明输入的有可能只是日期部分,而没有时间部分
None.gif
            strDate = strDTCheck ;
None.gif            
return CheckDate(strDate) ;
None.gif         }                 
None.gif         
return false;
None.gif      }
None.gif    strDate 
= strDateString.substr(0,strSp); //取日期部分
None.gif
    strTime = strDateString.substr(strSp+1,strDateString.length-strSp+1); //取时间部分
None.gif
    
None.gif    
var separator = ':';//时间分隔符
None.gif
    var arrayOfTimes = strTime.split(separator); // HH:mm:ss 两个分隔符    
None.gif
    if(arrayOfTimes.length == 2 ) 
None.gif    { 
//如果没有秒钟,补上 使之成为 HH:mm:ss 格式
None.gif
        strTime = strTime   +":00"
None.gif    }
None.gif    
if (CheckDate(strDate) == true)//调用子函数CheckDate
None.gif
    {   //校验日期部分正确 
None.gif
         // if (CheckTime(strTime) == true)
None.gif
          if (isTime(strTime) == true//调用子函数isTime
None.gif
              {  return true;}
None.gif          
else
None.gif              {  
return false;}
None.gif    }
None.gif    
else
None.gif    {
//校验日期部分不正确 ,返回false
None.gif
          return false;
None.gif    }                  
None.gif}
None.gif  
// 添加时间: 2005-07-11
None.gif
  //短时间,形如 (13:04:06)
None.gif
  function isTime(str)
None.gif      {
None.gif        
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
None.gif        
if (a == null) {alert('输入的时间格式不正确'); return false;}
None.gif        
if (a[1]>24 || a[3]>60 || a[4]>60)
None.gif        {
None.gif          alert(
"时间格式不对");
None.gif          
return false
None.gif        }
None.gif        
return true;
None.gif      }
None.gif
//***************************************************
None.gif//
 名称: CheckDate 
None.gif//
 功能; 判断得到的日期格式是否合法(注:不包括时间部分),
None.gif//
       验证的格式有:yyyy-MM-dd(yyyy-M-d)格式,yyyyMMdd格式 以及 yyyy/MM/dd格式 
None.gif//
 调用: 调用子函数CheckyyyyMMdd(dayString) 
None.gif//
 参数: String SparaDate (1999-01-01)  or  (1999/01/01)         
None.gif//
 返回值:
None.gif//
        如果字串日期格式合法,定义校验通过          返回true
None.gif//
        如果字串日期格式不合法,                     返回false
None.gif//
 作者:  
None.gif//
 时间: 2005-06-23
None.gif//
****************************************************
None.gif
function CheckDate(SparaDate)
None.gif { 
None.gif    
//如果是正确的yyyyMMdd格式则校验通过,增加时间2005-06-23 added by linsj
None.gif
    if (CheckyyyyMMdd(SparaDate) == true)
None.gif    {    
return true;   }
None.gif    
None.gif     
var strYMDSP = 0
None.gif     
var strYMD;
None.gif    
None.gif     
//判断YYYYMMDD中的分隔符号 不是- 或/报错     
None.gif
      if (!(SparaDate.substr(4,1)=="-"))
None.gif      { 
None.gif          
if(!(SparaDate.substr(4,1)=="/"))
None.gif           {    
return false;   }
None.gif       }            
None.gif         
None.gif     
var strYear = SparaDate.substr(0,4);
None.gif     SparaDate   
= SparaDate.substr(5,SparaDate.length-5);
None.gif          
None.gif    
//去掉年后的字符串   
None.gif
    for (i=0;i<SparaDate.length;i++)
None.gif    {
None.gif        
if (SparaDate.substr(i,1)=="-"
None.gif        {
None.gif           strYMDSP 
= i;
None.gif           
break;
None.gif        }
None.gif       
if (SparaDate.substr(i,1)=="/"
None.gif       {
None.gif          strYMDSP 
= i;
None.gif          
break;
None.gif       }
None.gif    }         
None.gif   
//剩下的字符串中没有-或/报错   
None.gif
    if  (strYMDSP<1)
None.gif    {
None.gif       
return false;
None.gif    }
None.gif        
None.gif   
var strMonth = SparaDate.substr(0,strYMDSP);
None.gif   
var strDay= SparaDate.substr(strYMDSP+1,SparaDate.length-strYMDSP+1);   
None.gif   
//如果月和日是一位的话补0 ,使之成为yyyyMMdd格式
None.gif
   if (strMonth.length == 1)
None.gif   {   strMonth 
= "0"+strMonth;        }  //补0             
None.gif
   if (strDay.length == 1)
None.gif   {      strDay 
= "0"+strDay;         }  //补0 
None.gif
    //调用CheckyyyyMMdd函数判断yyyyMMdd格式的日期
None.gif
    if (CheckyyyyMMdd(strYear+strMonth+strDay) == true)
None.gif    {    
return true;   }
None.gif    
else
None.gif    {   
return false;   }   
None.gif
None.gif }  
// end  function CheckDate
None.gif//
***************************************************
None.gif//
 名称: CheckyyyyMMdd 
None.gif//
 功能; 判断得到的日期字符串的日期格式是否合法,仅yyyyMMdd格式;   
None.gif//
 参数: String dayString 如:(19980508 yyyyMMdd格式)
None.gif//
 时间: 2005-06-23
None.gif//
 作者: lsj
None.gif//
****************************************************
None.gif
function CheckyyyyMMdd(dayString)
None.gif{
None.gif    
//年月日检验函数
None.gif
    var digit = "0123456789";
None.gif    datelist 
= new Array(31,29,31,30,31,30,31,31,30,31,30,31);
None.gif    
if (dayString.length !=8return(false);
None.gif    
for(i=0;i<8;i++)
None.gif    {
None.gif        
if(digit.indexOf(dayString.charAt(i),0)==-1return(false);
None.gif    }
None.gif    year  
= dayString.substr(0,4); //截取年部分
None.gif
    month = dayString.substr(4,2); //截取月部分
None.gif
    date  = dayString.substr(6,2); //截取日部分
None.gif
    if (year>2200||year<1900||month>12||month<1||date>31||date<1)  return(false);
None.gif    
if(date>datelist[month-1]) return(false);
None.gif
None.gif    yyyy 
= eval(year);
None.gif    
if ( month == "02" )
None.gif    {
None.gif        
if ( (yyyy % 400== 0 )
None.gif        {
None.gif            
if ( date>29 )  return(false);
None.gif        }
None.gif        
else if ( (yyyy % 4== 0 && (yyyy % 100!= 0 )
None.gif        {
None.gif            
if ( date>29 )  return(false);
None.gif        }
None.gif        
else
None.gif        {
None.gif            
if ( date>28 )  return(false);
None.gif        }
None.gif    }
None.gif    
return(true);
None.gif
// end function CheckyyyyMMdd
None.gif

None.gif
None.gif
//********************** 方法二 **********************
None.gif
       
None.gif      
//校验 完全使用时间正则表达式
        //用法:isDateTimeString(document.getElementById('TextBox1').value) ;
None.gif
       function isDateTimeString(str)
None.gif      {
None.gif        str 
= str.Trim();
None.gif        
if(str.length == 0 ) return true ;
None.gif        
None.gif        
var a = str.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s((([0-9]|[0-1][0-9]|[2][0-3]))\:([0-9]|[0-5][0-9])(()|(\:([0-9]|[0-5][0-9])))))?$/);
None.gif        
if (a == null) { return false;}
None.gif        
if (a[1]>24 || a[3]>60 || a[4]>60)
None.gif        {
None.gif          
//alert("时间格式不对");
None.gif
          return false
None.gif        }
None.gif        
return true;
None.gif      }
None.gif     
None.gif     
None.gif     
//另外可以参考的函数
None.gif
     //***************************************************
None.gif//
 名称: CheckTime 
None.gif//
 功能; 判断得到的时间格式是否合法;   
None.gif//
 参数: String (21:21:21)
None.gif//
 调用 的方法:function CheckHHmmss(time)          
None.gif//
 作者:  
None.gif//
****************************************************
None.gif/*
 
None.giffunction CheckTime(SparaTime)
None.gif{
None.gif
None.gif    var CurrentTimeString;
None.gif    var strTimeString;
None.gif    var strLength = 0;
None.gif    strTimeString = "";
None.gif    CurrentTimeString = SparaTime.Trim(); //去掉两边空格
None.gif   if (CurrentTimeString.length == 0)
None.gif   { //长度为0,即没有输入时间
None.gif      strTimeString = "000000"; 
None.gif   }
None.gif   else
None.gif   {    
None.gif      strLength = CurrentTimeString.length;
None.gif      //如果长度不满8位,报错              
None.gif      if (strLength == 8) 
None.gif      {            
None.gif        //去掉时间间隔符:":"               
None.gif         for(var j=0 ;j< CurrentTimeString.length;j++)
None.gif         {
None.gif            if (CurrentTimeString.substr(j,1) != ":")
None.gif            {
None.gif                strTimeString = strTimeString+CurrentTimeString.substr(j,1);
None.gif            }
None.gif         }
None.gif       }
None.gif       else
None.gif       { 
None.gif            return false; 
None.gif       }                
None.gif    }
None.gif   return CheckHHmmss (strTimeString);          
None.gif}
None.gif//***************************************************
None.gif// 名称: CheckHHmmss 
None.gif// 功能; 判断得到的时间格式是否合法;   
None.gif// 参数: String 如:(222222)
None.gif// 时间: 2005-07-11
None.gif// 作者: 
None.gif//****************************************************
None.gif 
None.giffunction CheckHHmmss (time)
None.gif{
None.gif//时间校验函数
None.gif    var digit="0123456789";
None.gif    if (time.length !=6) return(false);
None.gif    for(i=0;i<6;i++)
None.gif    {
None.gif        if(digit.indexOf(time.charAt(i),0)==-1) return(false);
None.gif    }
None.gif    hh=time.substr(0,2);
None.gif    mm=time.substr(2,2);
None.gif    ss=time.substr(4,2);
None.gif    if (hh>24||hh<0||mm>60||mm<0||ss>60||ss<0)  return(false);
None.gif    return(true);
None.gif}
None.gif 
*/
None.gif



转载于:https://www.cnblogs.com/jinglelin/archive/2005/07/11/190696.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值