与其它语言一样,as3也使用Date类处理日期时间。as3的Data特点是直观和灵活。Date类基于Object,是顶级类。不需要声明。Date类有三种构造方式:
1.省略参数获取当前时间:
var currentDate:Date=new Date();
2.使用多个参数创建指定时间:
var aDate:Date=new Date(year,month,date,hour,minute,second,millisecond);
这里参数分别为年、月、日、小时、分、秒、毫秒。值得注意的是月份以0开头,范围为0-11,日以1开头,范围是1-31。时间也都是以0开头。
当然,有时我们不希望输入所有的参数,比如只输入日期不想输入时间,输入时间也不想输入毫秒。Date可以让我们指定至少两个以上的参数,即至少需要年和月。其它的参数都取默认值。天数的默认值是第1天,时间默认值为0时0分0秒0毫秒。
3.使用整数参数创建指定时间:
这种方式把整数当作与标准时间GMT(格尼尼致时间:1970年1月1日 0:00:000)经过的毫秒数来计算指定的时间。如:
var aDate:Date=new Date(1000*60*60*24) //表示格尼尼致制一来的第二天。
4.以字符串形式传递参数:
可使用多种格式的字符串向Date传递参数,这种方式需要Date能够理解。能够理解的字符串被自动解析。如Tue Feb "1 00:00:00 GMT-0800 2005"。但这种方式对于不同人有不同习惯,难于统一,建议少用。
获取和设置日期时间:
Date类提供了两套方式让我们获取和设置日期时间。可以使用属性或者方法。它们都非常好理解。只是有通用时间和本地时间之分。因为各个地区都有时差。通用时间都包括有UTC字样。使用方法有get和set之分。使用属则不必。本人倾向于使用属性。
计算时间:
通常我们需要计算时间,比如计算两个时间之差,看看我们从出生以来经过了多少天。还有计算时间的增量,看看一个疗程50天后是几月几日。我们通常想到直接拿两个时间去相加减。但Date并没有为我们提供运算符重载。我们必须自己动手转化。通常通过getTime和setTime方法进行转化。
getTime(date:Date):Number
把当前日期转为通用时间以来的毫秒数。
setTime(millsecond:Number):Number
以毫秒为单位设置自通用时间以来的日期。
下面的代码用于计算你出生以来经过的天数:
var myBirthDate:Date=new Date(1980,1,28);
var currentDate:Date=new Date();
var diffmillSec:Number=currentDate.getTime()-myBirthDate.getTime();
var diffDays:Number=Math.floor(diffmillSec/(1000*60*60*24));
trace("I've living on the earth for "+diffDays+" days");
下面代码用于计算50天后是几月几日:
var nextMillSec:Number=new Date().getTime()+50*24*3600*1000;
var nextDate:Date=new Date(nextMillSec);
trace("month="+nextDate.month);
trace("date="+int(nextDate.date+1));