复发实际上是如何工作的,这不是一个问题。我想实现一种方法,以指定的重复间隔来计算两个日期之间的天数。可能是每周,每月,每两个月(我不知道确切),每年等等。到目前为止,我做的最简单的事情是以下操作,它让我计算两个日期之间的所有天数,然后用每周复发的间隔时间为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;
}