技术成就梦想

知道用户需求,做到专注!c#,donet,Frameworks,UML,面向对象,设计模式!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

很完美的JS判断日期函数

Posted on 2009-02-06 18:46  我不是高手  阅读(1363)  评论(0编辑  收藏  举报
//判断输入的日期是否正确
function CheckDate(INDate)

 
if(INDate==""){return true;}
 subYY
=INDate.substr(0,4)
 
if(isNaN(subYY) || subYY<=0){
  
return true;
 }
 
//转换月份
 if(INDate.indexOf('-',0)!=-1){ separate="-"}
 
else{
  
if(INDate.indexOf('/',0)!=-1){separate="/"}
  
else {return true;}
  }
  area
=INDate.indexOf(separate,0)
  subMM
=INDate.substr(area+1,INDate.indexOf(separate,area+1)-(area+1))
  
if(isNaN(subMM) || subMM<=0){return true;}
  
if(subMM.length<2){subMM="0"+subMM}
 
//转换日
 area=INDate.lastIndexOf(separate)
 subDD
=INDate.substr(area+1,INDate.length-area-1)
 
if(isNaN(subDD) || subDD<=0){
  
return true;
 }
 
if(eval(subDD)<10){subDD="0"+eval(subDD)}
 NewDate
=subYY+"-"+subMM+"-"+subDD
 
if(NewDate.length!=10){return true;}
    
if(NewDate.substr(4,1)!="-"){return true;}
    
if(NewDate.substr(7,1)!="-"){return true;}
 
var MM=NewDate.substr(5,2);
 
var DD=NewDate.substr(8,2);
 
if((subYY%4==0 && subYY%100!=0)||subYY%400==0){ //判断是否为闰年
  if(parseInt(MM)==2){
   
if(DD>29){return true;}
  }
 }
else{
  
if(parseInt(MM)==2){
   
if(DD>28){return true;}
  } 
 }
 
var mm=new Array(1,3,5,7,8,10,12); //判断每月中的最大天数
 var flag = false;
 
for(i=0;i<mm.length;i++){
    
if(parseInt(MM,10== mm[i]){flag = true;}
 }
 
if (flag == true){
    
if(parseInt(DD)>31){return true;}
 }
else{
    
if(parseInt(DD)>30){return true;}
 }

 
if(parseInt(MM)>12){return true;}
   
return false;
}