创建日期数组

时间:2018-11-06 18:26:19

标签: javascript

我有2个日期:开始和结束。 我需要创建一个日期数组,并每3个月在这2个日期之间添加天数。

开始= 2018/8/19 结束= 11/19/2018

Array = [92,92,89,92,92]

Example

这是我尝试过的:

const start = "8/19/2018";
const end = "11/19/2018 ";

const dates = [];

const mstart = moment(new Date(start));
const mend = moment(new Date(end));

for (let i = 0; mstart < mend ; i++) {
    var Q = mstart.add(3, 'months').format( 'YYYY-MM-DD');
    const daysInMonth = startLease.diff(Q, 'days');
    dates.push(daysInMonth);
}

但是,它返回的数组为0。

感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

我们可以这样做。

const start = "8/19/2018";
const end = "11/19/2018 ";

const s = new Date(start)
const e = new Date(end)

const daysDifference = (e.getTime()-s.getTime())/1000/60/60/24  //finding diffeernce in milliseconds and then converting it to days

console.log(daysDifference) // required ans

答案 1 :(得分:0)

首先,我从您的屏幕快照中假设您的意思是11/19/2019,而不是2018。我还假设您的代码中startLeasemstart

基于这些假设,我相信您所缺少的是时刻操纵函数会改变原始时刻,因此说var Q = mstart.add(3, 'months')还会为mstart增加3个月,因此当您比较它们时,您不会因为它们是相同的日期,所以t获得期望值。相反,您将需要克隆mstart,如下所示:

const start = "8/19/2018";
const end = "11/19/2019 ";

const dates = [];

const mstart = moment(start, "MM/DD/YYYY");
const mend = moment(end, "MM/DD/YYYY");

while (mstart < mend) {
    let Q = mstart.clone();
    mstart.add(3, 'months');
    const daysInMonth = mstart.diff(Q, 'days');
    dates.push(daysInMonth);
}

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