如何使用moment js获取开始日期和结束日期之间的日期列表

时间:2019-04-01 09:31:42

标签: javascript momentjs

使用时刻js获取基于开始和结束日期的日期列表。

例如,我有两个日期,一个是开始日期和结束日期。我的开始日期是2019-04-02,结束日期是2019-05-16,我需要这两个日期之间的所有日期。

我的输出将是["2019-04-02", "2019-04-03", "2019-04-04", ..., "2019-05-16"],在js时刻有可能吗?

4 个答案:

答案 0 :(得分:1)

    var dates = [];
    var startDate = moment('2019-04-02', 'YYYY-MM-DD');
    dates.push(startDate.format('YYYY-MM-DD'));          
    while(!startDate.isSame('2019-05-16')){
        startDate = startDate.add(1, 'days');
        dates.push(startDate.format('YYYY-MM-DD'));
    }

    console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>

答案 1 :(得分:1)

这应该可以,但是下次发布问题之前,请记住添加您尝试过的内容

var day1 = moment("2019-05-01");
var day2 = moment("2019-04-06");
var result = [moment({...day2})];

while(day1.date() != day2.date()){
  day2.add(1, 'day');
  result.push(moment({ ...day2 }));  
}
console.log(result.map(x => x.format("YYYY-MM-DD")));
<script src="https://momentjs.com/downloads/moment.min.js"></script>

答案 2 :(得分:0)

类似以下的方法将起作用。我们设置开始日期和结束日期,创建一个空数组,并通过在每次迭代中添加一天并将当前日期添加到列表中来循环浏览这些天。

var start = moment("2019-01-01")
var end = moment("2019-01-30");

var list = [];

for (var current = start; current <= end; current.add(1, 'd')) {
    list.push(current.format("YYYY-MM-DD"))
}

答案 3 :(得分:0)

var enumerateDaysBetweenDates = function(startDate, endDate) {
var dates = [];

var currDate = moment(startDate).startOf('day');
var lastDate = moment(endDate).startOf('day');

while(currDate.add(1, 'days').diff(lastDate) < 0) {
    console.log(currDate.toDate());
    dates.push(currDate.clone().toDate());
}

return dates;

};