使用JavaScript对日期进行合法性校验和日期比较的两段代码

使用JavaScript对日期进行合法性校验和日期比较的两段代码
以下代码主体来自互联网,原作者已经不可考,在此向这些有共享精神的作者致敬。

一.日期的合法性校验
以下代码中进行验证的主函数是isValidDateString,它的输入是类似2011-1-27这样的字符串,如果合法就返回真,否则返回假。如果您的日期格式不同,请将验证主函数中的正则表达式修改之,比如说输入是2011/1/27这样的字符串,则pattern=/^ *(\d{4})[/](\d{1,2})[/](\d{1,2})*$/;
// 进行日期合法性验证的主函数
function
 isValidDateString(dateString){
    
var  pattern =/^   * (\d{ 4 }) - (\d{ 1 , 2 }) - (\d{ 1 , 2 }) * $ / ;
    
var  arr = pattern.exec(dateString);
    
   
var  year = arr[ 1 ];
    
var  month = arr[ 2 ];
    
var  dday = arr[ 3 ];

    
return  IsValidDate(year,month,dday);
}


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


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


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


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


二.日期的比较
下面函数是进行日期比较如果date1小于等于date2,则返回真,否则返回假。注意这两个参数都应该通过了上面的日期合法性校验,请注意先验证一下。
function isReasonable(startDate,endDate){

    startDate=startDate.replace("-","/");
    endDate=endDate.replace("-","/");

    var dt1=new Date(Date.parse(startDate));
    var dt2=new Date(Date.parse(endDate));
      
    return dt1<=dt2;
}

你可能感兴趣的:(使用JavaScript对日期进行合法性校验和日期比较的两段代码)