Javascript - get array of dates between 2 dates

后端 未结 25 1473
傲寒
傲寒 2020-11-22 15:16
var range = getDates(new Date(), new Date().addDays(7));

I\'d like \"range\" to be an array of date objects, one for each day between the two dates

25条回答
  •  臣服心动
    2020-11-22 15:54

    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("")
    

提交回复
热议问题