AS3 时间类

时间类代码:

package
{
	/**
	 * 时间类
	 * @author Jave.Lin
	 * 
	 */	
	public class Time
	{
		/** 'hh:mm:ss' */		
		public static const Format1:String='hh:mm:ss';
		/** 'hh-mm-ss' */		
		public static const Format2:String='hh-mm-ss';
		/** 自身指针 */		
		private var _self:Time;
		/** 当前time字符串 */		
		private var _time:String;
		/** 时间格式:Time.Format1、Time.Format2 */		
		private var _format:String;
		/** 小时 */		
		private var _hours:int=0;
		/** 分钟 */
		private var _mintues:int=0;
		/** 秒数 */
		private var _seconds:int=0;
		/** 总秒数 */
		private var _totalSeconds:int=0;
		/**
		 * 当前time字符串
		 * @return 返回当前time字符串
		 */		
		public function get time():String{return _time;}
		/**
		 * 时间格式:Time.Format1、Time.Format2
		 * @return 返回当前时间格式
		 */		
		public function get format():String{return _format;}
		/**
		 * 当前小时
		 * @return 返回当前小时
		 */		
		public function get hours():int{return _hours;}
		/**
		 * 当前分钟
		 * @return 返回当前分钟
		 */		
		public function get mintues():int{return _mintues;}
		/**
		 * 当前秒数
		 * @return 返回当前秒数
		 */		
		public function get seconds():int{return _seconds;}
		/**
		 * 当前总秒数
		 * @return 返回当前总秒数
		 */		
		public function get totalSeconds():int{return _totalSeconds;}
		/**
		 * 设置当前总秒数
		 * @param $value 要设置当前总秒数的值
		 */		
		public function set totalSeconds($value:int):void
		{
			if(_totalSeconds!=$value)
			{
				_totalSeconds=$value;
				
				_hours=_totalSeconds/3600;
				_mintues=(_totalSeconds%3600)/60;
				_seconds=_totalSeconds%60;
				
				while(_seconds>59)
				{
					_seconds-=60;
					_mintues++;
				}
				while(_mintues>59)
				{
					_mintues-=60;
					_hours++;
				}
				if(_hours>23)
				{
					_hours=23;
					_mintues=59;
					_seconds=59;
				}
				
				refreshTotalSeconds();
				var splitChar:String;
				if(format==Time.Format1)
				{
					splitChar=':';
				}else if(format==Time.Format2)
				{
					splitChar='-';
				}
				var hStr:String=_hours.toString();
				if(hStr.length!=2)hStr='0'+hStr;
				var mStr:String=_mintues.toString();
				if(mStr.length!=2)mStr='0'+mStr;
				var sStr:String=_seconds.toString();
				if(sStr.length!=2)sStr='0'+sStr;
				_time=hStr+splitChar+mStr+splitChar+sStr;
			}
		}
		/**
		 * 设置当前秒数
		 * @param $value 要设置当前秒数的值
		 */		
		public function set seconds($value:int):void
		{
			if(_seconds!=$value)
			{
				if(!isSecondsValidate($value))
				{
					throw new Error('set Time\'s seconds error!,$value is ['+$value+']');
				}
				_seconds=$value;
				refreshTotalSeconds();
			}
		}
		/**
		 * 设置当前分钟
		 * @param $value 要设置当前分钟的值
		 */		
		public function set mintues($value:int):void
		{
			if(_mintues!=$value)
			{
				if(!isMintuesValidate($value))
				{
					throw new Error('set Time\'s mintues error!,$value is ['+$value+']');
				}
				_mintues=$value;
				refresh();
			}
		}
		/**
		 * 设置当前小时
		 * @param $value 要设置当前小时的值
		 */		
		public function set hours($value:int):void
		{
			if(_hours!=$value)
			{
				if(!isHoursValidate($value))
				{
					throw new Error('set Time\'s hours error!,$value is ['+$value+']');
				}
				_hours=$value;
				refresh();
			}
		}
		/**
		 * 设置当前time字符串
		 * @param $value 要设置当前time字符串的值
		 * 
		 */		
		public function set time($value:String):void
		{
			if(_time!=$value)
			{
				if(!isTimeValidate($value,_format))
				{
					throw new Error('set Time\'s time error!,$value is ['+$value+']');
				}
				_time=$value;
				refresh();
			}
		}
		/**
		 * 指定$time字符串值,指定$format格式,创建Time类对象
		 * @param $time 指定$time字符串值
		 * @param $format 指定$format格式
		 */		
		public function Time($time:String,$format:String=Time.Format1)
		{
			if(!isFormatValidate($format))
			{
				throw new Error('Time\'s format is inValidate error!,format:['+$format+']');
			}
			if(!isTimeValidate($time,$format))
			{
				throw new Error('Time\'s time is inValidate error!,time:['+$time+']');
			}
			_self=this;
			_format=$format;
			time=$time;
		}
		/**
		 * 指定$time字符串值,指定$time格式,
		 * 判断$time字符串是否符合指定的$format格式的字符串,
		 * 符合返回true,否则返回false
		 * @param $time 指定$time字符串值
		 * @param $format 指定$format格式
		 * @return 符合返回true,否则返回false
		 */		
		public static function isTimeValidate($time:String,$format:String=Time.Format1):Boolean
		{
			if($time== null)return false;
			if($time=='')return false;
			if($time.length!=8)return false;
			var checkChar:String;
			if($format==Time.Format1)
			{
				checkChar=':';
			}else if($format==Time.Format2)
			{
				checkChar='-';
			}
			if($time.substr(2,1)!=checkChar || $time.substr(5,1)!=checkChar)return false;
			
			return true;
		}
		/**
		 * 指定$format格式,判断$format格式是否有效格式
		 * @param $format 指定$format格式
		 * @return 有效返回true,否则返回false
		 */		
		public static function isFormatValidate($format:String):Boolean
		{
			if(Time.Format1!=$format && Time.Format2!=$format)
			{
				return false;0
			}
			return true;
		}
		/**
		 * 指定$seconds当前秒数,判断$seconds当前秒数是否有效数据
		 * @param $seconds 指定$seconds当前秒数
		 * @return 有效返回true,否则返回false
		 */		
		public static function isSecondsValidate($seconds:int):Boolean
		{
			if($seconds<0)
			{
				return false;
			}
			if($seconds>59)
			{
				return false;
			}
			return true;
		}
		/**
		 * 指定$mintures当前分钟,判断$mintures当前分钟是否有效数据
		 * @param $mintures 指定$mintures当前分钟
		 * @return 有效返回true,否则返回false
		 */		
		public static function isMintuesValidate($mintures:int):Boolean
		{
			if($mintures<0)
			{
				return false;
			}
			if($mintures>59)
			{
				return false;
			}
			return true;
		}
		/**
		 * 指定$hours当前小时,判断$hours当前小时是否有效数据
		 * @param $hours 指定$hours当前小时
		 * @return 有效返回true,否则返回false
		 */		
		public static function isHoursValidate($hours:int):Boolean
		{
			if($hours<0)
			{
				return false;
			}
			if($hours>23)
			{
				return false;
			}
			return true;
		}
		/**
		 * 以当前的time字符串数据为准,刷新内部,时、分、秒、总秒数据
		 */		
		private function refresh():void
		{
			var checkChar:String;
			if(format==Time.Format1)
			{
				checkChar=':';
			}else if(format==Time.Format2)
			{
				checkChar='-';
			}
			var strArr:Array=time.split(checkChar);
			
			_hours=int(strArr[0]);
			if(!isHoursValidate(_hours))
			{
				throw new Error('Time\'s $hours is inValidate error!,$hours:['+_hours+']');
			}
			_mintues=int(strArr[1]);
			if(!isMintuesValidate(_mintues))
			{
				throw new Error('Time\'s $mintues is inValidate error!,$mintues:['+_mintues+']');
			}
			_seconds=int(strArr[2]);
			if(!isSecondsValidate(_seconds))
			{
				throw new Error('Time\'s $seconds is inValidate error!,$seconds:['+_seconds+']');
			}
			
			refreshTotalSeconds();
		}
		/**
		 * 以当前的时、分、秒数据为准,刷新总秒数数据
		 */		
		private function refreshTotalSeconds():void
		{
			_totalSeconds=_seconds;
			_totalSeconds+=(_mintues==0?0:_mintues*60);
			_totalSeconds+=(_hours==0?0:_hours*60*60);
		}
		/**
		 * 直接显示给外部提示的字符串内容
		 * @return 返回直接显示给外部提示的字符串内容
		 */		
		public function toString():String
		{
			return 'time:'+time+'\t'+'totalSeconds:'+totalSeconds;
		}
	}
}


测试时间类:

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	/**
	 * 测试时间类
	 * @author Jave.Lin
	 */
	public class TestTime extends Sprite
	{
		private var time:Time;
		private var tf:TextField;
		private var seconds:Number=0;
		private var totalSeconds:Number=0;
		
		public function TestTime()
		{
			time=new Time('15-10-00',Time.Format2);
			totalSeconds=time.totalSeconds;
			tf=new TextField();
			tf.autoSize=TextFieldAutoSize.LEFT;
			addChild(tf);
			
			tf.text=
				'time:'+time.toString()+'\n'+
				'hours:'+time.hours+'\n'+
				'mintues:'+time.mintues+'\n'+
				'seconds:'+time.seconds;
			
			addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
		}
		
		private function onEnterFrameHandler(e:Event):void
		{
//			seconds+=0.1;
//			totalSeconds+=0.1;
			totalSeconds+=30;
//			time.seconds=seconds;
			time.totalSeconds=totalSeconds;
			
			tf.text=
				'time:'+time.toString()+'\n'+
				'hours:'+time.hours+'\n'+
				'mintues:'+time.mintues+'\n'+
				'seconds:'+time.seconds;
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值