创建一个日期对象:
var now = new Date();
调用Date构造函数而不传递参数,则新创建的对象自动获得当前日期和时间。
如果想根据特定的日期和时间创建日期对象,则需传入表示该日期的毫秒数(即从UTC时间1970年1月1日午夜起至该日期止经过的毫秒数)。
ECMAScript为简化此过程提供了两种方法:
Date.parse():
param:表示日期的字符串参数
return:根据字符串返回相应日期的毫秒数;若传入的字符串不能表示日期,则返回NaN
字符串格式:
- “月/日/年”,
new Date(Date.parse("6/13/2014"));
- “英文月名 日,年”,
new Date(Date.parse("January 12,2004"));
- “英文星期几 英文名月名 日 年 时:分:秒 时区”,
new Date(Date.parse("Tue May 25 2004 00:00:00 GMT-0700"));
- ISO 8601扩展模式 YYYY-MM-DDTHH:mm:ss.sssZ,
new Date(Date.parse("2004-05-25T00:00:00"));
(只有兼容ECMAScript 5的实现支持此格式)
var someDate = new Date(Date.parse("May 25,2004"));
//若直接传字符串,则会在后台调用Date.parse()
var someDate = new Date("May 25,2004");
Date.UTC():
param:表示日期的字符串参数
return:根据字符串返回相应日期的毫秒数
字符串格式:年份、基于0的月份(0-11)、月中的哪一天(1-31)、小时数(0-23)、分钟、秒以及毫秒数。只有年、月是必须的。若没有提供月中的天数,则默认为1;若省略其他参数,则都默认为0。
//示例
//GMT时间2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000,0));
//GMT时间2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005,4,5,17,55,55));
这里很奇怪,红皮书上说的是默认设为0,但是我在Chrome上输出下面代码中y2k变量,得到的结果是Sat Jan 01 2000 08:00:00 GMT+0800,并不是午夜0时。
Date构造函数也会模仿Date.UTC(),但是日期和时间是基于本地而非GMT来创建。
本地时间输出,默认确实全设为0了。
//等价简写
//本地时间2000年1月1日午夜零时
var y2k = new Date(2000,0);
//本地时间2005年5月5日下午5:55:55
var allFives = new Date(2005,4,5,17,55,55);
ECMAScript 5添加了Date.new()方法,返回表示调用这个方法时的日期和时间的毫秒数。这个方法简化了使用Date对象分析代码的工作。例如:
//取得开始时间
var start = new Date();
//调用函数
doSomething();
//取得停止时间
var stop = new Date(),
result = stop - start;
网友评论