当前位置:嗨网首页>书籍在线阅读

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天后所在月份的月底。