Нахождение за месяц повторения с теми же днями недели с моментом - PullRequest
0 голосов
/ 07 мая 2019

Я новичок в moment.js, но пытаюсь сгенерировать даты, которые повторяются каждый месяц в те же дни недели, но не после даты. Например, Событие во вторник каждого месяца. Я видел этот момент, но мне трудно заставить его работать.

Это код, который у меня есть. Дата начала - это жестко закодированная дата fyi

var firstDay = new Date(startDate);

var nextMonth = new Date(
  firstDay.getFullYear(),
  firstDay.getMonth() + 1,
  firstDay.getDate()
);

console.log(startDate);
console.log(nextMonth);
console.log(firstDay);

var next = moment
  .recur()
  .every(startDate)
  .daysOfWeek()
  .every(nextMonth)
  .weeksOfMonthByDay();

return moment(next).format("YYYY-MM-DD");

1 Ответ

1 голос
/ 08 мая 2019

Вот пример использования момента-повторения.Я сделал это функцией, чтобы было немного понятнее, как вы можете изменить параметры, чтобы получить разные даты.Возможно, вы все же захотите заглянуть в CRON, чтобы создать даты для себя в зависимости от ваших потребностей.

function getNextEvents(startDate, numEvents, dayOfWeek, weekIndex) {
  var events = moment(startDate)
              .recur()
              .every(dayOfWeek)
              .daysOfWeek()
              .every(weekIndex)
              .weeksOfMonthByDay();
  
  return events.next(numEvents, "YYYY-MM-DD");
}

let firstDay = new Date();
var nextMonth = new Date(
  firstDay.getFullYear(),
  firstDay.getMonth() + 1,
  firstDay.getDate()
);

// Every second tuesday of the month: get next 5 dates
console.log(getNextEvents(nextMonth, 5, "Tuesday", 1));
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-recur/1.0.7/moment-recur.min.js"></script>
...