JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://kooiinc.github.io/JSHelpers/Helpers-min.js"></script>
<div class="solink" data-linkid="27763086"></div>
JavaScript
var log = Helpers.log2Screen;
Helpers.extendDate();
log('<hr><h3>interval every 7 days until 2015/21/1, no weekends</h3><hr>');
log( recurringDates(new Date('2018/1/1'),
new Date('2018/21/1'),
7, 'Date')
.map(function(v) {return v.format('WD MM dd yyyy');})
.join('<br>'));
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) {
void( noweekends ? recurrent.push(noWeekend())
: recurrent.push(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;
}