ActionScript的Date类真是垃圾,提供了年月日转Date的方法,没提供带时间的转换方法!自己默认的时间又是带日期的。提供的控件也只有年月日。你要别人怎么处理时分秒啊!
在网上查了很久后,觉得这些方法比较有用。整理如下:
var dob:Date = DateField.stringToDate("06/30/2005", "MM/DD/YYYY");
Alert.show(dob.fullYear.toString());
new Date()
定义一个时间对象,其时间为当前系统时间(当地时间)。
new Date(year, month, [date, hour, minute, second, millisecond])
定义一个时间对象,其时间根据给定的参数(当地时间)确定。各参数取值
为:year(0~99表示1900~1999,此外表示公制年份),month(0~11),
date(1~31),hour(0~23),minute(0~59),second(0~59),millisecond
(0~999)。
new Date(dateUTC_num)
定义一个时间对象,其时间根据dateUTC_num,即距离1970.1.1 0:00:00(GMT)
的时差(毫秒单位)决定。如:t = new Date(Date.UTC(2001, 10, 1, 18, 0))
则t就表示2001.11.1 18:00(GMT),以北京当地时间即为2001.11.2 2:00
(GMT+8:00)。
= myDate.toString()
将myDate以字符串形式返回,如:"Sun May 27 03:47:00 GMT+0900 2001",
表示myDate所指的当地时间为2001.5.27 3:47:00(周日),其时区为GMT+9:00
即格林威治世界标准时加9小时。
= myDate.getFullYear()
返回myDate所指时间的公制年份(当地时间)。
= myDate.getYear()
返回myDate所指时间的公制年份(当地时间)-1900,如2001年就为101。
= myDate.setFullYear(year, [month, date])
设置myDate的年月日(当地时间),year必须为公制年份值,month和date的取值参见构造函数。返回myDate的UTC时间值。
= myDate.setYear(year)
设置myDate的时间(当地时间),year的取值参见构造函数。返回myDate的UTC时间值。
= myDate.getMonth()
返回myDate所指时间的月份值(当地时间)。0表示一月,11表示十二月。
= myDate.setMonth(month, [date])
设置myDate的月日(当地时间),month和date的取值参见构造函数。返回myDate的UTC时间值。
= myDate.getDate()
返回myDate所指时间的日期值(当地时间)。
= myDate.setDate(date)
设置myDate的日期(当地时间),返回myDate的UTC时间值。
= myDate.getDay()
返回myDate所指时间的星期(当地时间),0表示周日,1~6表示周一到周六。
= myDate.getHours()
返回myDate所指时间的小时数(当地时间)。
= myDate.setHours(hour)
设置myDate的小时数(当地时间),返回myDate的UTC时间值。
= myDate.getMinutes()
返回myDate所指时间的分钟数(当地时间)。
= myDate.setMinutes(minute)
设置myDate的分钟数(当地时间),返回myDate的UTC时间值。
= myDate.getSeconds()
返回myDate所指时间的秒数(当地时间)。
= myDate.setSeconds(second)
设置myDate的秒数(当地时间),返回myDate的UTC时间值。
= myDate.getMilliseconds()
返回myDate所指时间的毫秒数(当地时间)。
= myDate.setMilliseconds(milliseconds)
设置myDate的毫秒数(当地时间),返回myDate的UTC时间值。
= myDate.getUTCFullYear()
= myDate.getUTCYear()
= myDate.setUTCFullYear(year, [month, date])
= myDate.setUTCYear(year)
= myDate.getUTCMonth()
= myDate.setUTCMonth(month, [date])
= myDate.getUTCDate()
= myDate.setUTCDate(date)
= myDate.getUTCDay()
= myDate.getUTCHours()
= myDate.setUTCHours(hour)
= myDate.getUTCMinutes()
= myDate.setUTCMinutes(minute)
= myDate.getUTCSeconds()
= myDate.setUTCSeconds(second)
= myDate.getUTCMilliseconds()
= myDate.setUTCMilliseconds(milliseconds)
功能与未加UTC的相应函数相同,只不过不是针对当地时间,而是针对格林
威治世界标准时间。
= myDate.getTime()
返回myDate的UTC时间值。
= myDate.getTimezoneOffset()
返回当地时间与格林威治世界标准时之间的时间差(分钟单位)。比如系统
时区设为GMT+8:00则返回-480,即比GMT提前8小时。
与其它语言一样,as3也使用Date类处理日期时间。as3的Data特点是直观和灵活。Date类基于Object,是顶级类。不需要声明。Date类有三种构造方式:
1.省略参数获取当前时间:
CODE:
var currentDate:Date=new Date();
2.使用多个参数创建指定时间:
CODE:
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)经过的毫秒数来计算指定的时间。如:
CODE:
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方法进行转化。
CODE:
getTime(date:Date):Number
把当前日期转为通用时间以来的毫秒数。
CODE:
setTime(millsecond:Number):Number
以毫秒为单位设置自通用时间以来的日期。
下面的代码用于计算你出生以来经过的天数:
CODE:
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天后是几月几日:
CODE:
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));