Date对象是javascript语言中内置的数据类型,用于提供日期和时间的操作接口。Date对象是在早期java中的java.util.Date类基础上创建的,为此,Date类型使用自UTC1970年1月1日0点开始经过的毫秒数来保存日期,它可以表示的时间范围是1970年1月1日0点前后的各1亿天。本文将详细介绍Date对象的用法
静态方法在介绍Date对象的构造函数之前,先介绍静态方法。因为,Date对象的静态方法与其构造函数有着千丝万缕的联系。使用构造函数创建Date对象的过程,类似于披着外套的静态方法的使用过程
Date对象总共有三个静态方法,分别是Date.now()、Date.parse()、Date.UTC()。这些方法通过Date()构造函数本身调用,而不是通过Date实例对象
Date.now()
ECMAScript5新增了now()方法,该方法返回当前时间距离1970年1月1日0点UTC的毫秒数。该方法不支持传递参数
[注意]该方法返回的是Number数字类型
console.log(Date.now());//1468297046050 console.log(Date.now('2016,1,1'));//1468297046050 console.log(typeof Date.now());//'number'
在不支持Date.now()方法的浏览器中,可以用+操作符把Date对象转换成数字,也可以实现类似效果
console.log(new Date());//Tue Jul 12 2016 12:21:33 GMT+0800 (中国标准时间) console.log(+new Date());//1468297293433 console.log(+new Date(2000,1,1));//949334400000
该方法常用于分析代码的工作
var start = Date.now(); doSomething(); var stop = Date.now(); result = stop - start;
Date.parse()
该方法用于解析一个日期字符串,参数是一个包含待解析的日期和时间的字符串,返回从1970年1月1日0点到给定日期的毫秒数
该方法会根据日期时间字符串格式规则来解析字符串的格式,除了标准格式外,以下格式也支持。如果字符串无法识别,将返回NaN
1、'月/日/年' 如6/13/2004
2、'月 日,年' 如January 12,2004或Jan 12,2004
3、'星期 月 日 年 时:分:秒 时区' Tue May 25 2004 00:00:00 GMT-0700
[注意]浏览器不支持不表示日期只表示时间的字符串格式
console.log(Date.parse('6/13/2004'));//1087056000000 console.log(Date.parse('January 12,2004'));//1073836800000 console.log(Date.parse('Tue May 25 2004 00:00:00 GMT-0700'));//1085468400000 console.log(Date.parse('2004-05-25T00:00:00'));//1085443200000 console.log(Date.parse('2016'));//1451606400000 console.log(Date.parse('T00:00:00'));//NaN console.log(Date.parse());//NaN
[注意]在ECMAScript5中,如果使用标准的日期时间字符串格式规则的字符串中,数学前有前置0,则会解析为UTC时间,时间没有前置0,则会解析为本地时间。其他情况一般都会解析为本地时间
console.log(Date.parse('7/12/2016'));//1468252800000 console.log(Date.parse('2016-7-12'));//1468252800000 console.log(Date.parse('2016-07-12'));//1468281600000
Date.UTC()
Date.UTC()同样返回给定日期的毫秒数,但其参数并不是一个字符串,而是分别代表年、月、日、时、分、秒、毫秒的数字参数
Date.UTC(year,month,day,hours,minutes,seconds,ms),year和month参数是固定的,其余参数可选,日期时间格式规则详见此
因为该函数有7个形参,所以其length值为7
console.log(Date.UTC.length);//7
[注意]该方法使用的是UTC时间,而不是本地时间
console.log(Date.UTC(1970));//NaN console.log(Date.UTC(1970,0));//0 console.log(Date.UTC(1970,0,2));//86400000 console.log(Date.UTC(1970,0,1,1));//3600000 console.log(Date.UTC(1970,0,1,1,59));//714000 console.log(Date.UTC(1970,0,1,1,59,30));//717000
构造函数Date()构造函数有多达5种的使用方法
【0】Date()
数可以不带new操作符,像一个函数一样调用。它将忽略所有传入的参数,并返回当前日期和时间的一个字符串表示
Date();
[注意]由于Date()函数没有使用操作符,实际上它不能被称为构造函数
console.log(Date());//"Tue Jul 12 2016 13:38:41 GMT+0800 (中国标准时间)" console.log(Date('2016/1/1'));//"Tue Jul 12 2016 13:38:41 GMT+0800 (中国标准时间)" console.log(typeof Date());//'string'
【1】Date()函数使用new操作符,且不带参数时,将根据当前时间和日期创建一个Date对象
new Date();
console.log(new Date());//Tue Jul 12 2016 13:41:45 GMT+0800 (中国标准时间) console.log(new Date);//Tue Jul 12 2016 13:41:45 GMT+0800 (中国标准时间) console.log(typeof new Date());//'object'
【2】Date()函数可接受一个数字参数,该参数表示设定时间与1970年1月1日0点之间的毫秒数
new Date(milliseconds);