Flex 4中 Date 与String 互相转换

如果你看到我这篇文章~我会告诉你,这个问题终于可以比较友好的解决了!!!


之前项目中经常遇到这一问题,但是在网上各种搜索,50%的解决办法是 用DateFormatter,但是,显而易见,这是Flex 3的解决方案,还有一部分是重写 DateField控件的stringToDate方法实现,还有一些人呢,用spark标签DateTimeFormatter实现,

对于十分想要用flex 4 、用 纯脚本的方式解决问题的我们来说~ 以上 均不是最佳方案! 

各种忍不了了~~~所以 翻翻API,发现了以下几个类或方法,Adobe在一定程度想让开发者更灵活的使用date对象。

列出用到的类及方法

flash.globalization.DateTimeFormatter;  用于格式化 date对象

Date.parse   用于将格式化的date字符串转化成 从1970年1月1日00:00:00开始的毫秒数。

好了,下面给出我的静态方法:

/**
		 * 将date 转换成 “yyyy-MM-dd HH:mm:ss”的字符串
		 * 
		 */
		public static function getDateStr(date:Date):String{
			if(date){
				var dtf:DateTimeFormatter=new DateTimeFormatter("zh-CN");
				dtf.setDateTimePattern("yyyy-MM-dd HH:mm:ss");
				/* 传统方式可以用下面这个拼字符串的方案来解决。
				date.fullYear+"-"+fillZero(date.month+1)+"-"
				+fillZero(date.date)+" "+fillZero(date.hours)+":"
				+fillZero(date.minutes)+":"+fillZero(date.seconds)
				*/
				return dtf.format(date);
			}
			return null;
		}
		/**
		 * 格式化的 date字符串转化Date对象,注意,除了使用date parse 可识别的标准时间字符串外,还可以
                 * 使用yyyy-MM-dd HH:mm:ss格式,代码中将“-”替换成“/”后,parse方法可以正确识别。
	         */
		public static function getDateByStr(date:String):Date{
			var res:Date=null;
			if(date){
                                var mil:Number=Date.parse(date.replace(/\-/g,"/"));
				res=new Date(mil);  
			}
			return res;
		}


里面的fillZero方法是用于补位的。

/**
		 * 补齐 数位
		 */
		public static function fillZero(num:Number,totalLength:Number=2):String{
			var resultStr:String=num+"";
			if(resultStr.length==totalLength){
					
			}else if(resultStr.length<totalLength){
				for(var i:int=0;i<(totalLength-resultStr.length);i++){
					resultStr="0"+resultStr;
				}
			}else{
				resultStr=null;
			}
			return resultStr;
		}

最后的验证语句:

        var s:String="2013-12-21 11:20:32";
	var d:Date=new Date();
	trace("A:"+d.toDateString());
	d=getDateByStr(s);
	trace("B:"+d.toString());
        var s2:String=getDateStr(d);
        trace("over:"+s2);


执行结果:

A:Wed Dec 31 2014
B:Sat Dec 21 11:20:32 GMT+0800 2013
over:2013-12-21 11:20:32





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值