日期类
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());
// → 1387407600000
console.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
返回的数组中的,完整匹配元素。