`
liuyiyou
  • 浏览: 23419 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

flex验证固定的日期

    博客分类:
  • flex
阅读更多
写了一个上午,因为对正则表达式不熟悉,对flex也不熟悉所以写得并不是很好。诸位有更好的话,麻烦留个言。
问题:给一个xxxx年xx月xx日xx:xx:xx的格式,界面输入一个字符串,判断是否满足要求!
代码如下
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>
分享到:
评论
2 楼 liuyiyou 2012-04-18  
307622798 写道
你这个正则写的太差劲了!!!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]$/;  
强烈建议精简!还有年份可不一定是4位的哦,公元221年,怎么表示??进行字符截取的时候也不正规,不要使用subStr这个不灵活,应该使用subString(0,charAt("年"))这样截取比你那样固定长度的截取要灵活的多,也更利于程序的扩展性!知道不?

额,对正则表达式不了解! 你的评论字也写得太大了吧!好好学后再改!
1 楼 307622798 2012-04-14  
你这个正则写的太差劲了!!!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]$/;  
强烈建议精简!还有年份可不一定是4位的哦,公元221年,怎么表示??进行字符截取的时候也不正规,不要使用subStr这个不灵活,应该使用subString(0,charAt("年"))这样截取比你那样固定长度的截取要灵活的多,也更利于程序的扩展性!知道不?

相关推荐

    flex验证框架

    Flex验证框架是一个专门为Flex应用程序设计的验证解决方案,它主要用于确保用户在交互过程中输入的数据符合预设的规则和标准。在Flex开发中,特别是在构建企业级应用时,数据验证是必不可少的,因为它能防止无效或不...

    Flex带时间的日期控件

    总结来说,Flex带时间的日期控件的实现涉及了Flex组件的自定义、事件处理、样式设计、国际化支持、可用性和数据验证等多个方面。通过熟练掌握这些知识点,开发者能够创建出符合项目需求、用户体验优秀的日期和时间...

    Flex实现自定义中文日期选择(mx:DateField)

    - 对于用户输入的日期,我们需要验证其是否符合中文日期格式,并在必要时进行转换。 除了自定义DateField,我们还可以考虑使用ActionScript的Date类和其他相关类,如DateTimeFormat,来处理日期的计算和显示。 ...

    flex自动验证组建(插件)

    Flex验证组件的核心在于`Validator`类,它允许开发者定义验证规则,并在用户输入发生变化或表单提交时执行这些规则。验证规则可以包括但不限于检查数据类型(如数字、日期等)、数据范围(最小值和最大值)、字符串...

    flex日期控件可选时分秒

    本文将深入探讨Flex中的日期控件及其支持的可选时分秒功能。 一、Flex框架简介 Flex是由Adobe公司推出的开源UI框架,主要用于构建富互联网应用程序(RIA)。它基于ActionScript编程语言和Flash Player运行环境,能够...

    flex组件之验证组件实例源码

    3. **DateValidators**: 用于日期和时间输入的验证,如DateValidator(验证日期格式和范围)。 4. **CustomValidators**: 开发者可以自定义验证逻辑,创建自己的验证组件,满足特定需求。 在提供的...

    Flex 日期组件

    在Flex开发中,日期组件是不可或缺的一部分,它们用于用户界面中显示和选择日期与时间。在本主题中,我们将深入探讨“Flex 日期组件”,特别是关于年月日、年月日时以及年月日时分的`DateField`封装。`DateField`是...

    Flex数据显示与数据验证

    主要聚焦于Flex框架下对日期、货币以及字符串等数据类型的验证与显示方法,并通过示例代码进行具体阐述。 ### Flex中的数据验证 Flex提供了丰富的功能来实现数据验证,这对于确保用户输入的有效性和准确性至关重要...

    Flex基础培训-5-[数据验证

    3. 验证日期: 4. 验证Email: 5. 验证数字: 6. 验证电话号码: 7. 验证正则表达式: 8. 验证加密数字: 9. 验证字符串: 10. 验证邮政编码: 五、校验器的使用技巧 在Flex中使用校验器进行数据验证,需要注意以下...

    Flex 日期带时分秒自定义控件

    标题"Flex 日期带时分秒自定义控件"指的是开发者为了满足项目需求,可能已经创建了一个能够显示并允许用户选择具体到时、分、秒的日期时间组件。这种控件通常用于那些需要精确时间输入的应用场景,比如预约系统或...

    flex----组件---数据验证类

    本篇文章将深入探讨Flex中的组件以及数据验证类,帮助你更好地理解和应用这些概念。 首先,Flex组件是构建用户界面的基本单元,它们可以是按钮、文本框、列表等可视化元素。在Flex中,组件主要由MXML和ActionScript...

    flex中时分秒计算

    在Flex开发中,时间相关的功能经常被用到,比如日期选择器、时间输入框等。对于这些需求,Adobe Flex框架提供了丰富的组件来帮助开发者实现。本文将详细介绍如何在Flex项目中实现时分秒的计算与展示,并结合具体代码...

    FLEX时间带时分秒可直接使用

    本主题聚焦于一个名为"FLEX时间带时分秒可直接使用"的功能,该功能解决了在某些场景下,用户选择新的时分秒后日期会自动跳转至当天的问题。下面我们将深入探讨这一功能的具体实现、应用场景以及相关技术。 首先,...

    flex 上传excel 导入数据库

    7. **安全性和性能优化**:为了保护用户数据和系统安全,应限制文件大小,验证文件类型,以及对上传的数据进行安全检查。性能优化可能涉及分批导入数据、异步处理、缓存策略等。 8. **源码和工具**:标签中的“源码...

    flex组件介绍

    `Form`组件支持多种数据绑定技术,使得数据收集和验证过程变得更加简单和高效。 #### Flex内建的UI控件 Flex框架内建了大量的UI控件,这些控件覆盖了从基本的文本框、按钮到复杂的列表和网格的各种需求。这些控件...

    flexdate.zip

    6. **日期范围检查**:可以检查一个日期是否在指定的日期范围内,这对于设置有效期或者验证输入日期很有帮助。 7. **国际化支持**:考虑到全球化的应用需求,Flexdate可能支持多语言环境下的日期格式和显示规则。 ...

    Flex时间选择控件 精确到时分秒

    Flex时间选择控件的基础是MX组件库中的`MX:DateField`或Spark组件库中的`s:DateSpinner`,它们提供了一种交互式的用户界面来选择日期和时间。在这里,我们特别关注的是时间部分,即精确到时分秒的选择。 `MX:...

    flex测试总结

    1. **单元测试**:这是测试的基础,对代码的最小可测试单元进行验证,例如ActionScript类或函数。我们可以使用ASUnit、FlexUnit或Spock这样的测试框架来编写和执行单元测试。 2. **集成测试**:当多个组件协同工作...

    myamfphp 实现php与flex交互

    AMF能将复杂的数据结构(如对象、数组、日期等)转换为字节流,减少了网络传输的数据量,提高了性能。 2. **服务端集成**:myAMFPHP可以轻松地与PHP项目集成,只需将服务类注册到myAMFPHP服务容器中,Flex客户端就...

    flex 时间组件(time)

    它通常与DateChooser组件一起使用,以提供完整的日期和时间选择功能。 1. 基本使用: Time组件在XML布局文件中通过`&lt;mx:TimePicker&gt;`标签进行声明。例如: ```xml ``` 这里,`hourFormat`属性设定24小时制,`...

Global site tag (gtag.js) - Google Analytics