13-日期的四则运算
15.10 日期的四则运算
因为日期只是一些数字,所以可以将日期相减从而获取它们相差的毫秒数:
const msDiff = d2 - d1; // 417740400000 ms
const daysDiff = msDiff/1000/60/60/24; // 4834.96 days
这个特性使得用 Array.prototype.sort 对日期进行排序变得很简单:
const dates = [];
// 创建一些随机日期
const min = new Date(2017, 0, 1).valueOf();
const delta = new Date(2020, 0, 1).valueOf() - min;
for(let i=0; i<10; i++)
dates.push(new Date(min + delta*Math.random()));
// 日期是随机的,并且(有可能)是无序的,我们可以对它们进行排序(降序)
dates.sort((a, b) => b - a);
// or ascending:
dates.sort((a, b) => a - b);
Moment.js提供了很多强大的方法来对日期做一般的四则运算,你可以增加或减少任意的时间单元:
const m = moment(); // 当前时间
m.add(3, 'days'); // m 为当前时间往后推3天
m.subtract(2, 'years'); // m 为2年前再往后推3天
m = moment(); // 重置
m.startOf('year'); // m 为今年1月1日
m.endOf('month'); // m 为今年1月31日
Moment.js还提供了方法的链式调用:
const m = moment()
.add(10, 'hours')
.subtract(3, 'days')
.endOf('month');
// m 为未来10个小时以后的时间点倒退3天后所在月份的月底。