检测日期字符串是否为合法(js版)

  1 /**
  2 *     checkDate
  3 */
  4 function DTO_checkDate(dateStr,format){
  5     if(dateStr == null || dateStr == "" ) return true;
  6     if(dateStr.length != format.length){
  7       
  8       return false;
  9     }  
 10        var year,month,day,hour,minute,second;
 11        switch (format) {
 12              case "YYYY" :
 13                   year = dateStr;
 14                    break;
 15              case "YYYYMM" :
 16                 year = dateStr.substring(0,4);
 17                 month = dateStr.substring(4,6);
 18                 break;
 19              case "YYYYMMDD" :
 20                 year = dateStr.substring(0,4);
 21                 month = dateStr.substring(4,6);
 22                 day = dateStr.substring(6,8);
 23                 break;
 24                
 25              case "YYYYMMDD HH:MI" :
 26                 year = dateStr.substring(0,4);
 27                 month = dateStr.substring(4,6);
 28                 day = dateStr.substring(6,8);
 29                 hour = dateStr.substring(9,11);
 30                 minute = dateStr.substring(12,14);
 31                 break;  
 32              case "YYYYMMDD HH:MI:SS" :
 33                 year = dateStr.substring(0,4);
 34                 month = dateStr.substring(4,6);
 35                 day = dateStr.substring(6,8);
 36                 hour = dateStr.substring(9,11);
 37                 minute = dateStr.substring(12,14);
 38                 second = dateStr.substring(15,17);
 39                 break;        
 40                
 41              case "YYYY-MM" :
 42                 if(!_checkSpecial(dateStr,4,"-" )) return false;
 43                 year = dateStr.substring(0,4);
 44                 month = dateStr.substring(5,7);
 45                 break;
 46              case "YYYY-MM-DD" :
 47                 if(!_checkSpecial(dateStr,4,"-" )) return false;
 48                 if(!_checkSpecial(dateStr,7,"-" )) return false;
 49                 year = dateStr.substring(0,4);
 50                 month = dateStr.substring(5,7);
 51                 day = dateStr.substring(8,10);           
 52                 break;
 53              case "YYYY-MM-DD HH:MI:SS" :
 54                 if(!_checkSpecial(dateStr,4,"-" )) return false;
 55                 if(!_checkSpecial(dateStr,7,"-" )) return false;
 56                 year = dateStr.substring(0,4);
 57                 month = dateStr.substring(5,7);
 58                 day = dateStr.substring(8,10);
 59                 hour = dateStr.substring(11,13);
 60                 minute = dateStr.substring(14,16);
 61                 second = dateStr.substring(17,19);
 62                 break;
 63              case "YYYYMMDDHHMISS" :
 64                 year = dateStr.substring(0,4);
 65                 month = dateStr.substring(4,6);
 66                 day = dateStr.substring(6,8);
 67                 hour = dateStr.substring(8,10);
 68                 minute = dateStr.substring(10,12);
 69                 second = dateStr.substring(12,14);
 70                 break;
 71                
 72              default:
 73                 
 74                 return false ;          
 75       }
 76        //check year
 77        if(year != null){
 78             year = parseInt(year,10);           
 79           if(isNaN(year)){    
 80             
 81                    return false ;
 82           }       
 83         if(year<1900 || year>2200){
 84                
 85                 return false ;
 86         }
 87          
 88       }
 89        //check month
 90        if(month != null){
 91             month = parseInt(month,10);
 92           if(isNaN(month)){   
 93            
 94                    return false ;
 95             }     
 96         if(month<1 || month >12){
 97                 
 98                 return false ;
 99         }      
100       }
101        //check day
102        if(day != null){
103             day = parseInt(day,10);
104           if(isNaN(day)){     
105             
106                    return false ;
107             }     
108         if((day==0)||(day>31)){
109                 
110                 return false ;
111          }
112          else if (day>28 && day<31){
113                 if(month==2){
114                                 if(day!=29){
115                                         
116                                         return false ;
117                                 }
118                                 else {
119                                         if((year%4)!=0){
120                                                 
121                                                 return false ;
122                                          }
123                                          else {
124                                                 if((year%100==0)&&(year%400!=0)){
125                                                       
126                                                        return false ;
127                                                 }
128                                          }
129                                 }
130                         }
131                 }
132 
133                 else if (day==31){
134                         if((month==2)||(month==4)||(month==6)||(month==9)||(month==11)){
135                                
136                                 return false ;
137                         }
138                 } 
139       }
140        //check hour
141        if(hour != null){
142             hour = parseInt(hour,10);
143           if(isNaN(hour)){
144             
145                    return false ;
146             }           
147         if(hour<0 || hour >23){
148                
149                 return false ;
150         }      
151       }
152        //check minute
153        if(minute != null){
154             minute = parseInt(minute,10);
155           if(isNaN(minute)){
156             
157                    return false ;
158             }           
159         if(minute<0 || minute >59){
160                
161                 return false ;
162         }     
163       }
164        //check second
165        if(second != null){
166             second = parseInt(second,10);
167           if(isNaN(second)){    
168             
169                    return false ;
170             }     
171         if(second<0 || second >59){
172                
173                 return false ;
174         }      
175       }     
176        return true ;      
177 }
178 function _checkSpecial(str,pos,identifier){
179        if(str.substring(pos,pos+1) == identifier) return true;
180       pos++;
181        
182        return false ;
183 }

 

posted @ 2013-03-02 13:51  将来的老大爷  阅读(1062)  评论(1编辑  收藏  举报

如果本页面列出的内容侵犯了您的权益,请告知。
知识共享许可协议
996.icu