⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timezone.as

📁 QS我也没用过
💻 AS
字号:
package qs.utils
{
	public class TimeZone
	{
		public var id:String;
		public var standard:TimeZoneRule;
		public var daylight:TimeZoneRule;
		private static var tmp:Date = new Date();
		
		public function TimeZone():void
		{
		}
		

		public  static function get localTimeZone():TimeZone
		{
			return new TimeZone();
		}
		
		public function hasTime(date:Date):Boolean
		{
			return date.milliseconds == date.seconds == date.minutes == date.hours == 0;
		}

		public function daysInMonth(date:Date):int
		{
			tmp.setTime(date.getTime());
			tmp.date = 1;
			tmp.month++;
			tmp.date -= 1;			
			return tmp.date;
		}
		public function firstDayOfMonth(date:Date):int
		{
			tmp.setTime(date.getTime());
			tmp.date = 1;
			return tmp.day;
		}
		public  function startOfMonth(date:Date):Date
		{
			var result:Date = new Date(date.getTime());
			result.date = 1;
			result.seconds = result.minutes = result.milliseconds = result.hours = 0;
			return result;
		}

		public  function endOfMonth(date:Date,advanceMidnight:Boolean = false):Date
		{
			var result:Date = new Date(date.getTime());
			result.date = 1;
			result.seconds = result.minutes = result.milliseconds = result.hours = 0;
			result.month += 1;
			result.milliseconds -= 1;
			return result;
		}

		public  function startOfWeek(date:Date):Date
		{
			var result:Date = new Date(date.getTime());
			result.date -= result.day;
			result.seconds = result.minutes = result.milliseconds = result.hours = 0;
			return result;
		}
		public  function endOfWeek(date:Date,advanceMidnight:Boolean = false):Date
		{
			var result:Date = startOfWeek(date);
			if(result.getTime() < date.getTime())
				result.date += 7;
			result.milliseconds -= 1;
			return result;
		}
		
		public  function startOfDay(date:Date):Date
		{
			var result:Date = new Date(date.getTime());
			result.seconds = result.minutes = result.milliseconds = result.hours = 0;
			return result;
		}

		public  function endOfDay(date:Date,advanceMidnight:Boolean = false):Date
		{
			var result:Date = new Date(date.getTime());
			result.seconds = result.minutes = result.milliseconds = result.hours = 0;
			result.date = result.date + 1;
			result.milliseconds -= 1;
			return result;
		}
		public  function toHours(value:Date):Number
		{
			return toDays(value)*24 + value.hours + value.minutes /60 + value.seconds/(60*60);
		}
		
		public  function timeOnly(date:Date):Number
		{
			return date.hours * DateUtils.MILLI_IN_HOUR + date.minutes * DateUtils.MILLI_IN_MINUTE + date.seconds * DateUtils.MILLI_IN_SECOND + date.milliseconds;
		}

		public  function toDays(value:Date):Number
		{
			var dayCount:Number = 0;
			for(var year:Number = value.fullYear-1;year >= 1970;year--)
			{
				if(year & 0x3 == 0)
					dayCount += 366;
				else
					dayCount += 365;
			}
			for(var month:Number = value.month-1;month >= 0;month--)
			{
				dayCount += DAYS_IN_MONTH[month];
				if(month == 1 && value.fullYear & 0x3 == 0)
					dayCount += 1;
			}
			dayCount += value.date - 1;
			
			
			return dayCount;
		}
		public function rangeDaySpan(r:DateRange):Number
		{
			return daySpan(r.start,r.end);
		}
		public  function daySpan(fromValue:Date,toValue:Date):Number
		{
			return toDays(toValue) - toDays(fromValue) + 1;
		}

		public function rangeWeekSpan(r:DateRange):Number		
		{
			return weekSpan(r.start,r.end);
		}
		
		public function weekSpan(start:Date,end:Date):Number
		{
			var sow:Date = startOfWeek(start);
			var range:Number = (end.getTime() - sow.getTime()) / DateUtils.MILLI_IN_DAY;
			// this is a bit of a hack, to deal with leapyear. This could theoreticall still fail.
			// the right way to deal would be to see if the range spans a non-leapyear, and adjust by the appropriate number of milliseconds
			// before dividing.			
			if(hasTime(start) == false && hasTime(end) == false)
				range = Math.round(range);
			return Math.ceil((range)/7);
		}
		
		public function expandRangeToDays(r:DateRange,expandMidnight:Boolean = false):void
		{
			r.start = startOfDay(r.start);
			r.end = endOfDay(r.end,expandMidnight);			
		}
		public function expandRangeToWeeks(r:DateRange,expandMidnight:Boolean = false):void
		{
			r.start = startOfWeek(r.start);
			r.end = endOfWeek(r.end,expandMidnight);
		}
		public function expandRangeToMonths(r:DateRange,expandMidnight:Boolean = false):void
		{
			r.start = startOfMonth(r.start);
			r.end = endOfMonth(r.end,expandMidnight);
		}
		
		private static var DAYS_IN_MONTH:Array = [
			31,
			28,
			31,
			30,
			31,
			30,
			31,
			31,
			30,
			31,
			30,
			31,
			30,
			31			
		];
		
	}
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -