日期类
JavaScript 提供了用于表示日期的标准类,我们甚至可以用其表示时间点。该类型名为Date。如果使用new创建一个Date对象,你会得到当前的日期和时间。
console.log(new Date());// → Mon Nov 13 2017 16:19:11 GMT+0100 (CET)
你也可以创建表示特定时间的对象。
console.log(new Date(2009, 11, 9));// → Wed Dec 09 2009 00:00:00 GMT+0100 (CET)console.log(new Date(2009, 11, 9, 12, 59, 59, 999));// → Wed Dec 09 2009 12:59:59 GMT+0100 (CET)
JavaScript 中约定是:使用从 0 开始的数字表示月份(因此使用 11 表示 12 月),而使用从1开始的数字表示日期。这非常容易令人混淆。要注意这个细节。
构造器的后四个参数(小时、分钟、秒、毫秒)是可选的,如果用户没有指定这些参数,则参数的值默认为 0。
时间戳存储为 UTC 时区中 1970 年以来的毫秒数。 这遵循一个由“Unix 时间”设定的约定,该约定是在那个时候发明的。 你可以对 1970 年以前的时间使用负数。 日期对象上的getTime方法返回这个数字。 你可以想象它会很大。
console.log(new Date(2013, 11, 19).getTime());// → 1387407600000console.log(new Date(1387407600000));// → Thu Dec 19 2013 00:00:00 GMT+0100 (CET)
如果你为Date构造器指定了一个参数,构造器会将该参数看成毫秒数。你可以创建一个新的Date对象,并调用getTime方法,或调用Date.now()函数来获取当前时间对应的毫秒数。
Date对象提供了一些方法来提取时间中的某些数值,比如getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds。除了getFullYear之外该对象还有一个getYear方法,会返回使用两位数字表示的年份(比如 93 或 14),但很少用到。
通过在希望捕获的那部分模式字符串两边加上圆括号,我们可以从字符串中创建对应的Date对象。
function getDate(string) {let [_, day, month, year] =/(\d{1,2})-(\d{1,2})-(\d{4})/.exec(string);return new Date(year, month - 1, day);}console.log(getDate("30-1-2003"));// → Thu Jan 30 2003 00:00:00 GMT+0100 (CET)
_(下划线)绑定被忽略,并且只用于跳过由exec返回的数组中的,完整匹配元素。
