日期驗證

  1. package yiyou   
  2. {   
  3.     import mx.controls.Alert;   
  4.   
  5.     public class GenDateValidator   
  6.     {   
  7.         public function GenDateValidator()   
  8.         {   
  9. //          validatorDate(str);   
  10.         }   
  11.         public function validatorDate(str:String):Boolean   
  12.         {   
  13.             var formatStr:RegExp=/^[1-9][0-9][0-9][0-9]年[0-1][0-9]月[0-3][0-9]日[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$/;   
  14.             var flag:Boolean = false;   
  15.             /**  
  16.              * 驗證輸入格式是否合法  
  17.              * 驗證的內容有格式是否爲  
  18.              * 1:xxxx年xx月xx日xx:xx:xx  
  19.              * 2:月份是否爲  
  20.              **/  
  21.                
  22.             if(formatStr.exec(str)==null){   
  23.                 Alert.show("輸入格式不合法");   
  24.             }else  
  25.             {   
  26.                    
  27.                 //當小時爲24小時的時候,分鐘和秒鐘都要爲00   
  28.                 var yearStr:String = str.substr(0,4);   
  29.                 var monthStr:String = str.substr(5,2);   
  30.                 var dayStr:String = str.substr(8,2);   
  31.                 var hourStr:String=str.substr(11,2);//截取小時   
  32.                 var minStr:String = str.substr(14,2);   
  33.                 var secondStr:String = str.substr(17,2);   
  34.                    
  35.                 var year:Number = parseInt(yearStr);   
  36.                 var month:Number = parseInt(monthStr);   
  37.                 var day:Number = parseInt(dayStr);   
  38.                 var hour:Number = parseInt(hourStr);   
  39.                 var minute:Number = parseInt(minStr);   
  40.                 var second:Number = parseInt(secondStr);   
  41.                    
  42.                 flag = (validatorMonth(month) && validatorMonth(month) && validatorDay(day,month,year) && validatorHour(hour,minute,second));   
  43.                    
  44.                    
  45.             }   
  46.             return flag;   
  47.         }   
  48.         public function validatorMonth(month:Number):Boolean{   
  49.             //月份必須小於12,   
  50.             if(month>12)   
  51.             {   
  52.                 Alert.show("月份必須小於12");   
  53.                 return false;   
  54.             }   
  55.             return true;   
  56.         }   
  57.         public function validatorDay(day:Number,month:Number,year:Number):Boolean{   
  58.             //日期必須小於31,如果是4,6,8,10,必須小於30,如果是閏年,2月份必須小於29   
  59.             if(day>31)   
  60.             {   
  61.                 Alert.show("日份必須小於31");   
  62.                 return false;   
  63.             }else  
  64.             {   
  65.                 if(month == 4||month == 6||month == 9||month == 10)   
  66.                 {   
  67.                     if(day>30)   
  68.                     {   
  69.                         Alert.show("日份必須小於30");   
  70.                         return false;   
  71.                     }   
  72.                 }   
  73.                 if(month == 2)   
  74.                 {   
  75.                     //判斷選擇的年是否爲閏年   
  76.                     if((year%4==0 && year%100!=0)||(year%400==0))   
  77.                     {   
  78.                         if(day>29)   
  79.                         {   
  80.                             Alert.show("2月份必須小於29");   
  81.                             return false;   
  82.                         }   
  83.                     }else    
  84.                     {   
  85.                         if(day>28)   
  86.                         {   
  87.                             Alert.show("平年2月份必須小於28");   
  88.                             return false;   
  89.                         }   
  90.                     }   
  91.                 }   
  92.             }   
  93.             return true;   
  94.                
  95.         }   
  96.         public function validatorHour(hour:Number,minute:Number,second:Number):Boolean{   
  97.             //小時必須小於24,且當小時爲24時,分鐘和秒鐘都應該是0   
  98.             if(hour>24)   
  99.             {   
  100.                 Alert.show("小時必須小於或者等於24");   
  101.                 return false;   
  102.             }else   if(hour==24)   
  103.             {   
  104.                 if(minute!=00 || second !=00)   
  105.                 {   
  106.                     Alert.show("當小時爲24時,分秒必須都是0");   
  107.                     return false;   
  108.                 }   
  109.             }   
  110.             return true;   
  111.         }   
  112.     }   
  113. }  
package yiyou
{
	import mx.controls.Alert;

	public class GenDateValidator
	{
		public function GenDateValidator()
		{
//			validatorDate(str);
		}
		public function validatorDate(str:String):Boolean
		{
			var formatStr:RegExp=/^[1-9][0-9][0-9][0-9]年[0-1][0-9]月[0-3][0-9]日[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$/;
			var flag:Boolean = false;
			/**
			 * 驗證輸入格式是否合法
			 * 驗證的內容有格式是否爲
			 * 1:xxxx年xx月xx日xx:xx:xx
			 * 2:月份是否爲
			 **/
			
			if(formatStr.exec(str)==null){
				Alert.show("輸入格式不合法");
			}else
			{
				
				//當小時爲24小時的時候,分鐘和秒鐘都要爲00
				var yearStr:String = str.substr(0,4);
				var monthStr:String = str.substr(5,2);
				var dayStr:String = str.substr(8,2);
				var hourStr:String=str.substr(11,2);//截取小時
				var minStr:String = str.substr(14,2);
				var secondStr:String = str.substr(17,2);
				
				var year:Number = parseInt(yearStr);
				var month:Number = parseInt(monthStr);
				var day:Number = parseInt(dayStr);
				var hour:Number = parseInt(hourStr);
				var minute:Number = parseInt(minStr);
				var second:Number = parseInt(secondStr);
				
				flag = (validatorMonth(month) && validatorMonth(month) && validatorDay(day,month,year) && validatorHour(hour,minute,second));
				
				
			}
			return flag;
		}
		public function validatorMonth(month:Number):Boolean{
			//月份必須小於12,
			if(month>12)
			{
				Alert.show("月份必須小於12");
				return false;
			}
			return true;
		}
		public function validatorDay(day:Number,month:Number,year:Number):Boolean{
			//日期必須小於31,如果是4,6,8,10,必須小於30,如果是閏年,2月份必須小於29
			if(day>31)
			{
				Alert.show("日份必須小於31");
				return false;
			}else
			{
				if(month == 4||month == 6||month == 9||month == 10)
				{
					if(day>30)
					{
						Alert.show("日份必須小於30");
						return false;
					}
				}
				if(month == 2)
				{
					//判斷選擇的年是否爲閏年
					if((year%4==0 && year%100!=0)||(year%400==0))
					{
						if(day>29)
						{
							Alert.show("2月份必須小於29");
							return false;
						}
					}else 
					{
						if(day>28)
						{
							Alert.show("平年2月份必須小於28");
							return false;
						}
					}
				}
			}
			return true;
			
		}
		public function validatorHour(hour:Number,minute:Number,second:Number):Boolean{
			//小時必須小於24,且當小時爲24時,分鐘和秒鐘都應該是0
			if(hour>24)
			{
				Alert.show("小時必須小於或者等於24");
				return false;
			}else	if(hour==24)
			{
				if(minute!=00 || second !=00)
				{
					Alert.show("當小時爲24時,分秒必須都是0");
					return false;
				}
			}
			return true;
		}
	}
}


測試代碼如下:

Java代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"    
  3.                xmlns:s="library://ns.adobe.com/flex/spark"    
  4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:yiyou="yiyou.*">   
  5.        
  6.     <fx:Script>   
  7.         <![CDATA[       
  8.             import mx.controls.Alert;   
  9.                
  10.             import yiyou.GenDateValidator;   
  11.                
  12.             protected function btnID_clickHandler(event:MouseEvent):void  
  13.             {   
  14.                 var str:String=dataFieldID.text;   
  15.                 var validator:GenDateValidator = new GenDateValidator();           
  16.                 var flag:Boolean = validator.validatorDate(str);   
  17.                 if(flag)   
  18.                 {   
  19.                     Alert.show("輸入合法");   
  20.                     //處理步驟   
  21.                 }   
  22.                    
  23.             }   
  24.                
  25.         ]]>   
  26.     </fx:Script>   
  27.        
  28.     <fx:Declarations>   
  29.         <!-- 將非可視元素(例如服務、值對象)放在此處 -->   
  30.     </fx:Declarations>   
  31.     <yiyou:GenDateField x="239" y="100" id="dataFieldID">   
  32.            
  33.     </yiyou:GenDateField>   
  34.     <s:Button id="btnID" x="239" y="168" label="提交" click="btnID_clickHandler(event)"/>   
  35. </s:Application>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章