Maybe not a specific moment function, but certainly moment provides all the ingredients. Look at add() (for adding 7 days) and isBefore() (for the end date).
I've made a snippet that does something close to what you're asking:
var startDate = '1940-07-01';
var endDate = '2020-06-30'
var current = new moment(startDate);
var end = new moment(endDate);
var dates = [];
var startTimer = new Date();
while (current.isBefore(endDate)) {
dates.push(current.format('MM-DD-YYYY'));
current.add(7, 'days');
}
var endTimer = new Date();
console.log('Using isBefore took', endTimer.getTime() - startTimer.getTime());
current = new moment(startDate);
dates = [];
startTimer = new Date();
while (current < end) {
dates.push(current.format('MM-DD-YYYY'));
current.add(7, 'days');
}
endTimer = new Date();
console.log('Using simple comparison', endTimer.getTime() - startTimer.getTime());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.js"></script>
-- EDIT --
This is quite an old answer but it recently got some views so I want to point out something I've learned since getting more familiar with moment.
isBefore carries considerable overhead, and in fact it's much faster to user a simple comparison. That is to say:
current.isBefore(endDate)
is much slower than, (after you make a moment object from endDate)
var end = new moment(endDate);
if (current < endDate);
If you run the next snippet, where I've increased the time range to show the difference, you'll see the second approach is considerably faster:
var startDate = '1940-07-01';
var endDate = '2020-06-30'
var current = new moment(startDate);
var end = new moment(endDate);
var dates = [];
var startTimer = new Date();
while (current.isBefore(endDate)) {
dates.push(current.format('MM-DD-YYYY'));
current.add(7, 'days');
}
var endTimer = new Date();
console.log('Using isBefore took', endTimer.getTime() - startTimer.getTime());
current = new moment(startDate);
dates = [];
startTimer = new Date();
while (current < end) {
dates.push(current.format('MM-DD-YYYY'));
current.add(7, 'days');
}
endTimer = new Date();
console.log('Using simple comparison', endTimer.getTime() - startTimer.getTime());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.js"></script>