企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
`Date`对象是 JavaScript 原生的时间库。它以国际标准时间(UTC)1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)。 ## 一、普通函数的用法 `Date`对象可以作为普通函数直接调用,返回一个代表当前时间的字符串。 ``` Date() // "Tue Jan 07 2020 22:48:25 GMT+0800 (China Standard Time)" ``` ## 二、构造函数的用法 `Date`还可以当作构造函数使用。对它使用`new`命令,会返回一个`Date`对象的实例。如果不加参数,实例代表的就是当前时间。 ~~~ var today = new Date(); ~~~ 关于`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) // Thu Jan 01 1970 08:00:02 GMT+0800 (CST) ~~~ 上面代码中,2013被解释为毫秒数,而不是年份。 参数为年、月、日等多个整数时,各个参数的取值范围如下。 * 年:使用四位数年份,比如`2000`。如果写成两位数或个位数,则加上`1900`,即`10`代表1910年。如果是负数,表示公元前。 * 月:`0`表示一月,依次类推,`11`表示12月。 * 日:`1`到`31`。 * 小时:`0`到`23`。 * 分钟:`0`到`59`。 * 秒:`0`到`59` * 毫秒:`0`到`999`。 ## 三、日期的运算 类型自动转换时,`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)" ~~~ ## 四、静态方法 ### 4.1 Date.now() `Date.now`方法返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000。 ~~~ Date.now() // 1364026285194 ~~~ ### 4.2 Date.parse() `Date.parse`方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。 日期字符串应该符合 RFC 2822 和 ISO 8061 这两个标准,即`YYYY-MM-DDTHH:mm:ss.sssZ`格式,其中最后的`Z`表示时区。 ~~~ 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`对象提供了一系列`get*`方法,用来获取实例对象某个方面的值。 * `getTime()`:返回实例距离1970年1月1日00:00:00的毫秒数。 * `getDate()`:返回实例对象对应每个月的几号(从1开始)。 * `getDay()`:返回星期几,星期日为0,星期一为1,以此类推。 * `getFullYear()`:返回四位的年份。 * `getMonth()`:返回月份(0表示1月,11表示12月)。 * `getHours()`:返回小时(0-23)。 * `getMilliseconds()`:返回毫秒(0-999)。 * `getMinutes()`:返回分钟(0-59)。 * `getSeconds()`:返回秒(0-59)。 下面是一个例子,计算本年度还剩下多少天。 ~~~ function leftDays() { var today = new Date(); var endYear = new Date(today.getFullYear(), 11, 31, 23, 59, 59, 999); var msPerDay = 24 * 60 * 60 * 1000; return Math.round((endYear.getTime() - today.getTime()) / msPerDay); } ~~~