AIR-获取服务器时间

有时项目中需要使用服务器时间,但总不能每次需要的时候都从服务器中获取。这里获取的原理是一次获取成功后保存到内存,以后每次需要时就从内存中获取并计算出当前服务器时间。

AS3代码:

package qtone.ta.desk.common
{
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.utils.Timer;
	import flash.utils.getTimer;
	
	import qtone.ta.desk.dao.DateTimeDao;
	import qtone.ta.desk.event.DateTimeEvent;
	import qtone.ta.desk.framework.ObjectManager;
	
	/** 
	 * 获取并计算服务器当前服务器时间工具
	 * */  
	public class ServerTimeUtil
	{  
		private var dtDao:DateTimeDao; 
		
		private static var serverTime:Number = -1;  // 记录请求时返回的服务器时间  
		
		private static var regTime:Number=-1; // 记录请求时当前flash player运行的时间  
		
		private  var startTime:int; //	请求开始时间
		
		private  var endTime:int;//请求结束时间
		
		
		public function ServerTimeUtil(){ 
			
		}  
		
		public function load():void{
			
			startTime = getTimer();//记录请求开始时间
			//向服务器请求
                dtDao = ObjectManager.getInstance("DateTimeDao") as DateTimeDao;
			dtDao.addEventListener(DateTimeEvent.GET_TIME_COMPLETE,onComplete);
			dtDao.query();
		}
		
		//请求完成
		private function onComplete(event:DateTimeEvent):void{  
			
			dtDao.removeEventListener(DateTimeEvent.GET_TIME_COMPLETE,onComplete);
			
			if(event.data.success){
				
				endTime = getTimer();//记录请求结束时间
				regTime = (startTime+endTime)/2;  //得出请求时AVM运行时间
				serverTime= Number(event.data.nowTime);//请求时服务器时间
				
			}
			else{
				
				trace("获取服务器时间失败!");
				
			}
			
		}  
		
		/** 
		 * 获取当前服务器时间  
		 * */  
		public static function getServerTime():Number{  
			if(serverTime > 0)  
			{  
				// 服务器时间计算方式:当前服务器时间 = 当前AVM运行时间 - 请求时AVM运行时间 + 请求时服务器时间  
				var span:int = getTimer() - regTime;  
				return serverTime + span;  
			} 
			return -1;
		}  
		
		 
		
	}  
}


你可能感兴趣的:(ActionScript3)