首页 > 解决方案 > 创建日期数组

问题描述

我有 2 个日期:开始和结束。我需要每 3 个月创建一个日期数组,其中包含这两个日期之间的天数。

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

数组 = [92,92,89,92,92]

例子

这是我尝试过的:

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。

任何帮助表示赞赏。谢谢你。

标签: javascript

解决方案


首先,我从您的屏幕截图中假设您的意思是 2019 年 11 月 19 日,而不是 2018 年。我还假设您的代码startLease中的意思是mstart

有了这些假设,我相信你缺少的是时刻操作函数会改变原始时刻,所以说var Q = mstart.add(3, 'months')也会增加 3 个月mstart,所以当你比较它们时,你不会得到预期值,因为它们都是相同的日期. 相反,您将需要克隆 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>


推荐阅读