Date类型是在早期java中的java.util.Date类的基础上构建的,因此Date类型使用UTC(从1970年1月1如零时到现在的毫秒数)来保存日期。
创建日期对象
var now = new Date();
- 不给构造函数传参的情况下,新创建的对象自动获得当前日期和时间。
- 传入一个表示日期的毫秒数,则可以创建该日期时间的日期对象
静态方法
Date.parse( )
- 接收一个表示日期的字符串参数
- 尝试根据这个字符串返回相应日期的毫秒数
- 但此方法支持的字符格式有些混乱……
var someDate = new Date(Date.parse("May 25,2004"));
如果传入parse方法的字符串不能表示日期,那么它会返回NaN。
实际上,如果直接把表示日期的字符串传给Date构造函数,也会在后台调用Date.parse()。
//与上个例子等价的
var someDate = new Date("May 25,2004")
Date.UTC()
- 同样返回表示日期的毫秒数
- 参数分别为年份、基于0的月份、月中的哪一天(1-31)、小时数(0-23),分钟、秒、毫秒
只有前两个参数是必需的。 - 基于GMT时间创建
var date = new Date(Date.UTC(2000,0)); //2000年1月1日零时
var date2 = new Date(Date.UTC(2005,4,5,17,55,55));//2005年5月5日下午5:55:55
- Date构造函数也可以接收Date.UTC这样的参数,但时间是基于本地时区而非GMT来创建。
- 因此,如果第一个参数是数值,Date构造函数就会假设该值是日期中的年份,第二个参数是月份,以此类推。
因此可以将前面的例子重写如下:
var date = new Date(2000,0); //2000年1月1日零时
var date2 = new Date(2005,4,5,17,55,55);//2005年5月5日下午5:55:55
Date.now()
- 返回调用这个方法时的日期和时间的毫秒数
- 可以使用此方法来分析代码工作
var start = Date.now();
doSomething();
var stop = Date.now();
var result = stop-start;
- 在不支持now方法的浏览器中,使用+操作符获取Date对象的时间戳也可以达到同样的目的:
var start = +new Date();
doSomething();
var stop = +new Date();
var result = stop-start;
实例方法
- getDate():根据本地时间返回指定日期对象是月份中的第几天(1-31)
- getDay():根据本地时间返回指定日期对象是星期中的第几天(0-6)
- getFullYear():根据本地时间返回指定日期对象的年份
- getHours():根据本地时间返回指定日期对象的小时(0-23)
- getMonth():根据本地时间返回指定日期对象的月份(0-11)
- getTime():返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数
每个get方法都有相应的set方法。
继承的方法
- toString与toLocaleString返回表示日期的字符串,具体的格式与浏览器有关。
- valueOf则返回日期的毫秒表示。
因此可以使用比较操作符来比较日期
var date1 = new Date(2007,0,1);
var date2 = new Date(2007,1,1);
date1<date2; //true