Date类型使用UTC(国际协调时间)1970年1月1日零时开始经过的毫秒数来保存时间。
(1)创建当前日期
调用Date不传递参数的情况下,创建的新对象自动获得当前日期和时间(本地时区)。
var now=new Date();
(2)创建特定的日期和时间
如果要创建特定的日期对象,必须传入表示该日期的毫秒数(即从UTC时间1970年1月1日至该日期的毫秒数)。为简化这一过程,ECMAScript提供了两个方法:Date.parse()和Date.UTC();
var time1=new Date(Date.parse("May 25,2004"));
var time2=new Date(Date.UTC(2004,4,25));
time1和time2分别采用Date.parse()和Date.UTC()构建特定日期对象,它们有如下区别:
- time1为本地时区的2004年5月25日00:00,而time2为GMT时间(见注释)的2004年5月25日00:00(北京时间比GMT时间快8个小时,故time2为北京时间2004年5月24日 16:00);
alert(time1.getTime()==time2.getTime());//false
alert(time1.getTime()==time2.getTime()-8*60*60*1000);//true
- 传入Date.parse()方法的为字符串,而传入Date.UTC()方法的为表示日期或时间的数值参数;(具体格式见书p99);
- Date.UTC()方法中的月份为基于0的月份(即一月是0,二月是1,一次类推);
实际上,直接将特定日期传入Date构造函数,也会在后台调用Date.parse()或Date.UTC(),也就是说以下代码与前面的例子是等价的:
var time1=new Date("May 25,2004");
var time2=new Date(2004,4,25);
需要注意的是,此时日期和时间都是基于本地时区而不是GMT时间,即time1和time2同样表示本地时间的2004年5月25日00:00;
alert(time1.getTime()==time2.getTime());//true
注释:格林尼治标准时间(GMT,旧译“格林威治平均时间”或“格林威治标准时间”)是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。北京时间比GMT时间快8个小时。