Javascript-获取2个日期之间的日期数组

var range = getDates(new Date(), new Date().addDays(7));

我希望“范围”是一个日期对象数组,两个日期之间的每一天。

诀窍在于它也应该处理月份和年份的边界。

阳光凯2020/04/07 11:36:54

我看了上面所有的东西。最终写了自己。您不需要为此本机的for循环就足够了,并且最有意义,因为存在for循环来对范围内的值进行计数。

一线:

var getDaysArray = function(s,e) {for(var a=[],d=s;d<=e;d.setDate(d.getDate()+1)){ a.push(new Date(d));}return a;};

长版

var getDaysArray = function(start, end) {
    for(var arr=[],dt=start; dt<=end; dt.setDate(dt.getDate()+1)){
        arr.push(new Date(dt));
    }
    return arr;
};

列出以下日期:

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"
*/

从过去的日期到现在的天数:

var daylist = getDaysArray(new Date("2018-05-01"),new Date());
daylist.map((v)=>v.toISOString().slice(0,10)).join("")
凯西里2020/04/07 11:36:54
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;
}

这是一个功能演示 http://jsfiddle.net/jfhartsock/cM3ZU/