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

📄 dates.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.util
{	
	/**
	 * Utility methods for working with Date instances.
	 */
	public class Dates
	{
		// enumerated constants
		/** Constant indicating a time span of one or more years. */
		public static const YEARS:int        = 0;
		/** Constant indicating a time span on the order of months. */
		public static const MONTHS:int       = -1;
		/** Constant indicating a time span on the order of days. */
		public static const DAYS:int         = -2;
		/** Constant indicating a time span on the order of hours. */
		public static const HOURS:int        = -3;
		/** Constant indicating a time span on the order of minutes. */
		public static const MINUTES:int      = -4;
		/** Constant indicating a time span on the order of seconds. */
		public static const SECONDS:int      = -5;
		/** Constant indicating a time span on the order of milliseconds. */
		public static const MILLISECONDS:int = -6;
		/** Constant indicating a time span on the order of weeks. */
		public static const WEEKS:int = -10;
		
		/** Number of milliseconds in a minute. */
		public static const MS_MIN:Number  = 60*1000;
		/** Number of milliseconds in an hours. */
		public static const MS_HOUR:Number = 60*60*1000;
		/** Number of milliseconds in a day. */
		public static const MS_DAY:Number  = 24*60*60*1000;
		
		/**
		 * Constructor, throws an error if called, as this is an abstract class.
		 */
		public function Dates() {
			throw new Error("This is an abstract class.");
		}
		
		// -- Conversion ------------------------------------------------------
		
		/**
		 * Given a date, returns a date instance of the same time in Univeral
		 * Coordinated Time (UTC).
		 * @param d the date to convert
		 */
		public static function toUTC(d:Date) : Date {
			return new Date(d.fullYearUTC, d.monthUTC, d.dateUTC, d.hoursUTC,
							d.minutesUTC, d.secondsUTC, d.millisecondsUTC);
		}
		
		// -- Date Arithmetic -------------------------------------------------
		
		/**
		 * Adds years to a date instance.
		 * @param d the date
		 * @param x the number of years to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addYears(d:Date, x:int) : Date {
			return new Date(d.fullYear+x, d.month, d.date, d.hours, d.minutes, d.seconds, d.milliseconds);
		}
		
		/**
		 * Adds months to a date instance.
		 * @param d the date
		 * @param x the number of months to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addMonths(d:Date, x:int) : Date {
			var y:Number = Math.floor(x / 12); x -= 12*y;
			var m:Number = d.month + x;
			if (m > 11) {
				y += 1;
				m -= 12;
			} else if (m < 0) {
				y -= 1;
				m += 12;
			}
			return new Date(d.fullYear+y, m, d.date, d.hours, d.minutes, d.seconds, d.milliseconds);
		}
		
		/**
		 * Adds days to a date instance.
		 * @param d the date
		 * @param x the number of days to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addDays(d:Date, x:int) : Date {
			return new Date(d.time + MS_DAY * x);
		}
		
		/**
		 * Adds hours to a date instance.
		 * @param d the date
		 * @param x the number of hours to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addHours(d:Date, x:int) : Date {
			return new Date(d.time + MS_HOUR * x);
		}
		
		/**
		 * Adds minutes to a date instance.
		 * @param d the date
		 * @param x the number of minutes to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addMinutes(d:Date, x:int) : Date {
			return new Date(d.time + MS_MIN * x);
		}
		
		/**
		 * Adds seconds to a date instance.
		 * @param d the date
		 * @param x the number of seconds to add (can be negative to subtract)
		 * @return a new Date representing the new date and time
		 */
		public static function addSeconds(d:Date, x:int) : Date {
			return new Date(d.time + 1000 * x);
		}
		
		// -- Time Spans ------------------------------------------------------
				
		/**
		 * Rounds a date according to a particular time span. Date values are
		 * rounded to the minimum date/time value of the time span (the first
		 * day in a year, month, or week, or the beginning of a day, hours,
		 * minute, second, etc).
		 * @param t the date to round
		 * @param span the time span to which the date should be rounded, legal
		 *  values are YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS, or
		 *  MILLISECONDS
		 * @param roundUp if true, the date will be rounded up to nearest value,
		 * otherwise it will be rounded down (the default)
		 * @return a new Date representing the rounded date and time.
		 */
		public static function roundTime(t:Date, span:int, roundUp:Boolean=false) : Date
		{
			var d:Date = t;
			if (span > YEARS) {
				d = new Date(t.fullYear, 0);
				if (roundUp) d = addYears(d, 1);
			} else if (span == MONTHS) {
				d = new Date(t.fullYear, t.month);
				if (roundUp) d = addMonths(d, 1);				
			} else if (span == DAYS) {
				d = new Date(t.fullYear, t.month, t.date);
				if (roundUp) d = addDays(d, 1);
			} else if (span == HOURS) {
				d = new Date(t.fullYear, t.month, t.date, t.hours);
				if (roundUp) d = addHours(d, 1);
			} else if (span == MINUTES) {
				d = new Date(t.fullYear, t.month, t.date, t.hours, t.minutes);
				if (roundUp) d = addMinutes(d, 1);
			} else if (span == SECONDS) {
				d = new Date(t.fullYear, t.month, t.date, t.hours, t.minutes, t.seconds);
				if (roundUp) d = addSeconds(d, 1);
			} else if (span == MILLISECONDS) {
				d = new Date(d.time + (roundUp ? 1 : -1));
			} else if (span == WEEKS) {
				d = new Date(t.fullYear, t.month, t.date);
				if (roundUp) {
					d = addDays(d, 7 - d.day);
				} else {
					d = addDays(d, -d.day);
				}
			}
			return d;
		}
		
		/**
		 * Given two dates, returns a measure of the time span between them.
		 * @param t the first date to compare
		 * @param s the second date to compare
		 * @return an integer value indicating the time span between dates. If
		 * the return value is positive, it represents the number of years
		 * between dates. Otherwise, the return value is one of MONTHS, DAYS,
		 * HOURS, MINUTES, SECONDS, or MILLISECONDS.
		 */
		public static function timeSpan(t:Date, s:Date) : int
		{
			var span:Number = s.time - t.time;
			var days:Number = span / MS_DAY;

            if (days >= 365*2) 			return (1 + s.fullYear-t.fullYear);
            else if (days >= 60)   		return MONTHS;
            else if (span/MS_DAY > 1)	return DAYS;
            else if (span/MS_HOUR > 1)	return HOURS;
            else if (span/MS_MIN > 1)	return MINUTES;
            else if (span/1000.0 > 1)	return SECONDS;
            else						return MILLISECONDS;
		}
		
		/**
		 * Returns the number of milliseconds needed to step one time step
		 * forward according to the given time span measure.
		 * @param span the time span for which to return a time step value.
		 *  Legal values are any positive numbers (representing years) or DAYS,
		 *  HOURS, MINUTES, SECONDS, and MILLISECONDS. Note that the MONTHS
		 *  time span is not supported and will result in a zero return value.
		 * @return the number of milliseconds needed to more one time step
		 *  ahead according to the input time span. For years (positive
		 *  integer input), this step is the nearest power of ten less than the
		 *  input value.
		 */
		public static function timeStep(span:int):Number {
			if (span > YEARS) {
				return Math.pow(10, Math.floor(Maths.log(Math.max(1,span-1),10)));
			} else if (span == MONTHS) {
				return 0;
			} else if (span == DAYS) {
				return MS_DAY;
			} else if (span == HOURS) {
				return MS_HOUR;
			} else if (span == MINUTES) {
				return MS_MIN;
			} else if (span == SECONDS) {
				return 1000;
			} else {
				return 1;
			}
		}
		
	} // end of class DateUtil
}

⌨️ 快捷键说明

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