DFdou's Blog Life is short,Be yourself.

1311/090

Flash-Date 类的一些东西

最近用到Date类,发现AS2和AS3的Date类有所不同,主要将AS3的,AS2嘛,应该会慢慢被淘汰的哈。
先讲下构造函数:

Date () 构造函数
public function Date(yearOrTimevalue:Object, month:Number, date:Number = 1, hour:Number = 0, minute:Number = 0, second:Number = 0, millisecond:Number = 0)
语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9
构造一个新的 Date 对象,该对象将保存指定的日期和时间。
Date() 构造函数使用最多七个参数(year、month、... millisecond)将日期和时间指定为毫秒。 新构造的 Date 对象包含的日期取决于传递的参数的数目和数据类型。
如果未传递参数,则赋予 Date 对象当前日期和时间。
如果传递一个 Number 数据类型的参数,则基于自 GMT 时间 1970 年 1 月 1 日 0:00:000 以来的毫秒数赋予 Date 对象一个时间值,如独立参数所指定的。
如果传递一个 String 数据类型的参数,并且该字符串包含一个有效日期,则 Date 对象包含基于该日期的时间值。
如果传递两个或更多个参数,则基于传递的参数值赋予 Date 对象一个时间值,该时间值表示日期的年、月、日、小时、分钟、秒和毫秒。
如果传递一个字符串给 Date 类构造函数,则日期可以有多种格式,但必须至少包括月、日和年。 例如,Feb 1 2005 是有效的,而 Feb 2005 则是无效的。 下表列出了一些有效格式:
Day Month Date Hours:Minutes:Seconds GMT Year(例如,“Tue Feb 1 00:00:00 GMT-0800 2005”,这与 toString() 一致)
Day Month Date Year Hours:Minutes:Seconds AM/PM(例如,“Tue Feb 1 2005 12:00:00 AM”,这与 toLocaleString() 一致)
Day Month Date Year(例如,“Tue Feb 1 2005”,这与 toDateString() 一致)
Month/Day/Year(例如,“02/01/2005”)
Month/Year(例如,“02/2005”)
参数 yearOrTimevalue:Object — 如果指定了其它参数,则此数字表示年份(如 1965);否则,表示时间值。 如果该数字表示年份,则 0 至 99 之间的值表示 1900 年至 1999 年;否则,必须指定表示年份的所有 4 位数字。 如果该数字表示时间值(未指定任何其它参数),则为 GMT 时间 1970 年 1 月 1 日 0:00:00 之前或之后的毫秒数;负值表示 GMT 时间 1970 年 1 月 1 日 0:00:00 之前 的某个时间,而正值表示该时间之后的某个时间。
month:Number — 0(一月)到 11(十二月)之间的一个整数。
date:Number (default = 1) — 1 到 31 之间的一个整数。
hour:Number (default = 0) — 0(午夜)到 23(晚上 11 点)之间的一个整数。
minute:Number (default = 0) — 0 到 59 之间的一个整数。
second:Number (default = 0) — 0 到 59 之间的一个整数。
millisecond:Number (default = 0) — 0 到 999 之间的一个整数(毫秒)。


这里以日期形式传入的month变量是有点恶心的,范围是0-11而不是1-12,这样出来的代码会比较容易歧义,比方:

var date= new Date(2009, 10, 11);

这样date是2009/11/11而不是2009/10/11!很容易让人误解吧?
不过还好AS3里边支持多种参数,2009/11/11可以这样写:

var date= new Date("11/11/2009");

这样就好多了吧,很明确的2009/11/11。
由于AS2的Date构造函数不支持字符串类型参数,SO,2009/11/11比较方便的写法只能是:

var date= new Date(2009, 10, 11);

哭吧,不爽吧~
关于时间的运算,推荐使用Date.getTime()来相减获取毫秒数,比如计算今天和2009/11/11的时间差(毫秒数):

var today = new Date();
var date1111= new Date("11/11/2009");
var timeOffest=today.getTime()-date1111.getTime();
trace(timeOffest);

然后就可以用timeOffest来做点效果了,计算天数,小时数啊什么的。

Some Random Posts

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

:zhuang :xizao :wuwu :wenhao :wc :touxiang :shuaya :shuajian :shengtian :paopao :no :meinv :maonv :loveu :leilei :kua :jrjr :dahan :chi :chaocai :byebye


CommentLuv Enabled

No trackbacks yet.