查找与工作日相同的工作日中的每月重复

时间:2019-05-07 20:39:54

标签: javascript reactjs momentjs

我是moment.js的新手,但是我试图生成每个月都在同一工作日而不是日期之后重复出现的日期。例如,每月第二个星期二的活动。我看到了瞬间重现,但是我很难使它起作用。

这是我到目前为止的代码。开始日期是硬编码的日期

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 个答案:

答案 0 :(得分:1)

这里是使用动量递归的示例。我已经将其设置为函数,因此可以更清楚地了解如何更改参数以获取不同的日期。您可能仍需要研究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>