Как получить повторяющиеся даты, используя момент - PullRequest
0 голосов
/ 07 ноября 2018

В моем сценарии у меня есть дата начала и окончания

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

const endDate = 2018-12-01

Я получаю флаг от пользовательского интерфейса, где событие должно повторяться еженедельно от даты начала до даты окончания

Как я могу получить даты событий, попадающие в этот диапазон?

Ожидаемый результат около ["2018-11-07", "2018-11-14", .... ,"2018-11-28"]

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы можете использовать moment-range, как упоминал Акрион.

Но Вы можете просто создать свой собственный вспомогательный метод.

Возьми:

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);

Тест здесь

0 голосов
/ 07 ноября 2018

Вы можете просто использовать официальный плагин момента момент-диапазон :

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") ]
...