1,介绍
ECMAScript中的Date类型使用UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。
2,创建
- 不传递参数
新创建的对象获得当前日期和时间。
var now = new Date();
- 传表示日期的毫秒数(即从UTC时间1970年1月1日午夜起至该日期经过的毫秒数),为了简化计算毫秒数这一计算过程,ECMAScript提供了两个方法:Date.parse()和Date.UTC()。
- 直接将表示日期的字符串传递给Date构造函数,会在后台调用Date.parse()。
3,Date.parse()方法
接收一个表示日期的字符串参数。ECMA-262没有定义Date.parse()应该支持那种日期格式,这个方法的实现通常因地区而异。
- 将地区设置为美国的浏览器通常都接受下列日期格式:
- “月/日/年”,入6/13/2004;
- “英文月名 日,年”,如January 12,2004;
- “英文星期几英文月名 日 年 时:分:秒 时区”,入Tue May 25 2004 00:00:00 GMT:0700。
- 例:
var someDate = new Date(Date.parse("May 25,2004"));
- 如果传入的参数字符串不能表示日期,那么它会返回NaN。
4,Date.UTC()方法
所传参数,只有前两个(年和月)是必须的。如果没有提供月中的天数,则假设天数为1。如果省略其他参数,则统统假设为0。参数分别如下所示:
- 年份
- 基于0的月份(一月是0,二月是1,以此类推)。
- 月中的哪一天(1到31)。
- 小时数(0到23)。
- 分钟。
- 秒。
- 毫秒数。
5,Date.now()方法
ECMAScript 5添加了Date.now()方法,返回表示调用这个方法时的日期和时间毫秒数。
代码示例:
var start = Date.now(); doSomething(); var stop = Date.now(); result = stop - start;
在不支持该方法的浏览其中,使用+操作符获取Date对象的时间戳,代码示例:
var start = +new Date(); doSomething(); var stop= +new Date(); result = stop - start;
6,继承的方法
与其他引用类型一样,Date类型也重写了toLocaleString(),toString(),和valueOf()方法。
- toLocaleString(),toString()方法因浏览器而异,各浏览器之间的区别见《JavaScript高级程序设计》p100。
- valueOf()方法,不返回字符串,而是返回日期的毫秒数。因此,使用比较操作符来比较日期值。
7,日期格式化方法
以下没有哪一个方法能够用来在用户界面中显示一致的日期信息。
- toDateString() 以特定于实现的格式显示星期几,月,日和年;
- toTimeString() 以特定于实现的格式显示时,分,秒和时区;
- toLocaleDateString() 以特定于地区的格式显示星期几,月,日和年;
- toLocaleTimeString() 以特定于实现的格式显示时,分,秒;
- toUTCString() 以特定于实现的格式完整的UTC日期。
8,日期/时间组件方法
见《JavaScript高级程序设计》p102。