时间类代码:
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($seconds59)
{
return false;
}
return true;
}
/**
* 指定$mintures当前分钟,判断$mintures当前分钟是否有效数据
* @param $mintures 指定$mintures当前分钟
* @return 有效返回true,否则返回false
*/
public static function isMintuesValidate($mintures:int):Boolean
{
if($mintures59)
{
return false;
}
return true;
}
/**
* 指定$hours当前小时,判断$hours当前小时是否有效数据
* @param $hours 指定$hours当前小时
* @return 有效返回true,否则返回false
*/
public static function isHoursValidate($hours:int):Boolean
{
if($hours23)
{
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;
}
}
}