- 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;
- }
- }
- }
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;
}
}
}
測試代碼如下:
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:yiyou="yiyou.*">
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import yiyou.GenDateValidator;
- protected function btnID_clickHandler(event:MouseEvent):void
- {
- var str:String=dataFieldID.text;
- var validator:GenDateValidator = new GenDateValidator();
- var flag:Boolean = validator.validatorDate(str);
- if(flag)
- {
- Alert.show("輸入合法");
- //處理步驟
- }
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 將非可視元素(例如服務、值對象)放在此處 -->
- </fx:Declarations>
- <yiyou:GenDateField x="239" y="100" id="dataFieldID">
- </yiyou:GenDateField>
- <s:Button id="btnID" x="239" y="168" label="提交" click="btnID_clickHandler(event)"/>
- </s:Application>