如何使用时刻获取重复日期

时间:2018-11-07 07:41:22

标签: javascript node.js reactjs momentjs

在我的情况下,我有开始日期和结束日期

const startDate = 2018-11-07  // YYYY-MM-DD format and it is Wednesday

const endDate = 2018-12-01

我从UI收到一个标志,该事件需要从开始日期到结束日期每周重复一次

如何获取该日期内的活动日期?

预期结果约为["2018-11-07", "2018-11-14", .... ,"2018-11-28"]

2 个答案:

答案 0 :(得分:3)

您可以简单地使用官方时刻插件moment-range

const Moment = require('moment');
const MomentRange = require('moment-range');
const moment = MomentRange.extendMoment(Moment);

const range = moment.range(moment('2018-11-07'), moment('2018-12-01'));

console.log(Array.from(range.by('week')))

输出:

[ moment("2018-11-07T00:00:00.000"),
  moment("2018-11-14T00:00:00.000"),
  moment("2018-11-21T00:00:00.000"),
  moment("2018-11-28T00:00:00.000") ]

答案 1 :(得分:0)

您可以使用moment-range,如Akrion所述。

但是您可以简单地创建自己的帮助方法。

接受:

const moment = require('moment');

const generateDateRange = (from, to, step = 1, modifier = 'day', format = 'YYYY-MM-DD') => {
  const dates = [];

  let currentDate = moment(from);
  const lastDate = moment(to);

  while(currentDate <= lastDate) {
    dates.push(currentDate.format(format));
    currentDate = currentDate.add(step, modifier);
  }

  return dates;
}


const dates = generateDateRange('2018-11-07', '2018-12-01', 1, 'week');
console.log(dates);

测试here