编程语言
746
Date
对象以国际标准时间(UTC)1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(ms)。
作为普通函数使用
Date
对象可作为普通函数直接调用
Date() // 返回当前时间字符串 Date(2029, 7, 11) // 带有参数返回的还是当前时间。
构造函数
Date
可当作构造函数使用, 使用new
会返回一个Date
对象的实例
如果不加参数,实例代表的就是当前时间。
var today = new Date();
Date实例求值的时候,默认调用的是
toString()方法
这使得对Date
实例求值,返回的是一个字符串,代表该实例对应的时间。
var today = new Date(); today today.toString() //二者是相等的 // 当前时间的字符串
today
是Date
的实例,直接求值等同于调用toString
方法。
作为构造函数时,Date
对象可以接受多种格式的参数,返回一个该参数对应的时间实例。
// 参数为时间零点开始计算的毫秒数 new Date(1378218728000) // 参数为日期字符串 new Date('January 7, 2024'); // Sun Jan 07 2024 00:00:00 GMT+0800 (CST) // 参数为多个整数, // 代表年、月、日、小时、分钟、秒、毫秒 new Date(2013, 0, 7, 0, 0, 0, 0) // Tue Jan 07 2013 00:00:00 GMT+0800 (CST)
关于Date
构造函数的参数,有几点说明。
参数可以是负整数,代表1970之前的时间。
new Date(-1378218728000) // Fri Apr 30 1926 17:27:52 GMT+0800 (CST)
只要是能被Date.parse()
方法解析的字符串,都可当作参数。
new Date('2013-2-15') new Date('2013/2/15') new Date('02/15/2013') new Date('2013-FEB-15') new Date('FEB, 15, 2013') new Date('FEB 15, 2013') new Date('February, 15, 2013') new Date('February 15, 2013') new Date('15 Feb 2013') new Date('15, February, 2013') // Fri Feb 15 2013 00:00:00 GMT+0800 (CST)
上面多种写法返回的都是同一个时间。
参数为年、月、日等多个整数时,年和月是不能省略的,其他参数都可以省略的。
new Date(2013) // 2013被解释为毫秒数,而不是年份。 // Thu Jan 01 1970 08:00:02 GMT+0800 (CST)
运算
类型自动转换时,Date
实例如果转为数值,则等于对应的毫秒数;
如果转为字符串,则等于对应的日期字符串。
两个日期实例对象进行减法运算时,返回的是它们间隔的毫秒数
;
进行加法运算时,返回的是两个字符串连接而成的新字符串
。
var d1 = new Date(2000, 2, 1); var d2 = new Date(2000, 3, 1); d2 - d1 // 2678400000 d2 + d1 // "Sat Apr 01 2000 00:00:00 GMT+0800 (CST)Wed Mar 01 2000 00:00:00 GMT+0800 (CST)"
方法
now()
Date.now
方法返回当前时间距离时间零点的毫秒数
Date.now() // 1364026285194
parse()
Date.parse
方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数
Date.parse('Aug 9, 1995') Date.parse('January 26, 2011 13:51:50') Date.parse('Mon, 25 Dec 1995 13:30:00 GMT') Date.parse('Mon, 25 Dec 1995 13:30:00 +0430') Date.parse('2011-10-10') Date.parse('2011-10-10T14:48:00') Date.parse('xxx') // NaN 解析失败返回`NaN`。
释为 UTC 时间(世界标准时间),Date
构造函数的参数会被解释为当前时区的时间。