Loop through a date range with JavaScript Loop through a date range with JavaScript javascript javascript

Loop through a date range with JavaScript


Here's a way to do it by making use of the way adding one day causes the date to roll over to the next month if necessary, and without messing around with milliseconds. Daylight savings aren't an issue either.

var now = new Date();var daysOfYear = [];for (var d = new Date(2012, 0, 1); d <= now; d.setDate(d.getDate() + 1)) {    daysOfYear.push(new Date(d));}

Note that if you want to store the date, you'll need to make a new one (as above with new Date(d)), or else you'll end up with every stored date being the final value of d in the loop.


Based on Tom GullenĀ“s answer.

var start = new Date("02/05/2013");var end = new Date("02/10/2013");var loop = new Date(start);while(loop <= end){   alert(loop);              var newDate = loop.setDate(loop.getDate() + 1);   loop = new Date(newDate);}


I think I found an even simpler answer, if you allow yourself to use Moment.js:

// cycle through last five days, today included// you could also cycle through any dates you want, mostly for// making this snippet not time awareconst currentMoment = moment().subtract(4, 'days');const endMoment = moment().add(1, 'days');while (currentMoment.isBefore(endMoment, 'day')) {  console.log(`Loop at ${currentMoment.format('YYYY-MM-DD')}`);  currentMoment.add(1, 'days');}
<script src="https://cdn.jsdelivr.net/npm/moment@2/moment.min.js"></script>