复发实际上是如何工作的,这不是一个问题。我想实现一种方法,以指定的重复间隔来计算两个日期之间的天数。可能是每周,每月,每两个月(我不知道确切),每年等等。到目前为止,我做的最简单的事情是以下操作,它让我计算两个日期之间的所有天数,然后用每周复发的间隔时间为7天。如果您能建议我更好,更正确地实现它,将不胜感激。谢谢。

   //Push in the selected dates in the selected array.
                for (var i = 1; i < between.length; i += 7) {
                    selected.push(between[i]);
                    console.log(between[i]);

                }

最佳答案

此函数为两个日期之间的每个[interval]和[intervalType](例如,每1个月)提供一个日期。如果需要,它还可以在周末更正日期。那是你的想法吗?

这是一个jsFiddle demo

function recurringDates(startDate, endDate, interval, intervalType, noweekends) {
    intervalType = intervalType || 'Date';
    var date = startDate;
    var recurrent = [];
    var setget = {set: 'set'+intervalType, get: 'get'+intervalType};

    while (date < endDate) {
      recurrent.push( noweekends ? noWeekend() : new Date(date) );
      date[setget.set](date[setget.get]()+interval);
    }

    // add 1 day for sunday, subtract one for saturday
    function noWeekend() {
        var add, currdate = new Date(date), day = date.getDay();
        if (~[6,0].indexOf(day)) {
          currdate.setDate(currdate.getDate() + (add = day == 6 ? -1 : 1));
        }
        return new Date(currdate);
    }

    return recurrent;
}

10-07 21:32