Javascript - get array of dates between 2 dates Javascript - get array of dates between 2 dates javascript javascript

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;}