ActionScript 日期类

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));
阅读更多
个人分类: Flex
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭