Javascript - get array of dates between 2 dates
Date.prototype.addDays = function(days) { var date = new Date(this.valueOf()); date.setDate(date.getDate() + days); return date;}function getDates(startDate, stopDate) { var dateArray = new Array(); var currentDate = startDate; while (currentDate <= stopDate) { dateArray.push(new Date (currentDate)); currentDate = currentDate.addDays(1); } return dateArray;}
Here is a functional demo http://jsfiddle.net/jfhartsock/cM3ZU/
I looked all the ones above. Ended up writing myself. You do not need momentjs for this. A native for loop is enough and makes most sense because a for loop exists to count values in a range.
One Liner:
var getDaysArray = function(s,e) {for(var a=[],d=new Date(s);d<=e;d.setDate(d.getDate()+1)){ a.push(new Date(d));}return a;};
Long Version
var getDaysArray = function(start, end) { for(var arr=[],dt=new Date(start); dt<=end; dt.setDate(dt.getDate()+1)){ arr.push(new Date(dt)); } return arr;};
List dates in between:
var daylist = getDaysArray(new Date("2018-05-01"),new Date("2018-07-01"));daylist.map((v)=>v.toISOString().slice(0,10)).join("")/*Output: "2018-05-01 2018-05-02 2018-05-03 ... 2018-06-30 2018-07-01"*/
Days from a past date until now:
var daylist = getDaysArray(new Date("2018-05-01"),new Date());daylist.map((v)=>v.toISOString().slice(0,10)).join("")
Try this, remember to include moment js,
function getDates(startDate, stopDate) { var dateArray = []; var currentDate = moment(startDate); var stopDate = moment(stopDate); while (currentDate <= stopDate) { dateArray.push( moment(currentDate).format('YYYY-MM-DD') ) currentDate = moment(currentDate).add(1, 'days'); } return dateArray;}