javascript - 创建 2 个日期之间的日期数组

标签 javascript

我有 2 个日期:开始日期和结束日期。结束日期始终比开始日期少一天。因此,如果我的开始日是 19 日,那么结束日期将是下个月 18 日。

我正在尝试创建两个日期之间的天数数组。 (每月19日到18日,然后是18日到18日计算差额)

Example

2018年8月19日 - 2018年9月18日 = 30 天

2018年9月18日 - 2019年10月18日 = 30 天

2018年10月18日 - 2018年11月18日 = 31 天

数组 = [30,30,31]

我使用以下代码来计算日期之间的天数差异。

  function daysBetweenArrears (date1, date2){

         date1.setDate(date1.getDate() );
         date2.setDate(date2.getDate() - 1);
         var Diff = Math.abs(date2.getTime() - date1.getTime());
         var TimeDifference = Math.round(Diff / (1000 * 3600 * 24));
         return TimeDifference;
    }

以下代码用于创建数组

  if (document.getElementById("endDate"))
             y = document.getElementById("endDate").value;
          if (document.getElementById("startDate"))
             z = document.getElementById("startDate").value;

var dateArr = getDateArray(z, y);
     var dayCountArr = "";
     var b = [];

     for (var x = 0; x < dateArr.length-1; x++)
     {
         dayCountArr += daysBetweenArrears(dateArr[x], dateArr[x+1], ",");
         b.push(daysBetweenArrears(dateArr[x], dateArr[x+1]));
     }

问题是,当我按如下方式设置日期时,它给出了不正确的输出。问题在于,每当到下个月时,它都会错误地设置日期。我不确定我在这里做错了什么。任何帮助是极大的赞赏。谢谢。

date2.setDate(date2.getDate() - 1);

最佳答案

您可以使用 moment 来完成此操作。希望这会有所帮助。

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

const dates = [];

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

for (let i = 0; mstart < mend ; i++) {

    const daysInMonth = mstart.daysInMonth() + (i === 0 ? -1 : 0);

    dates.push(daysInMonth);

    mstart.add(1, 'M');
}

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

关于javascript - 创建 2 个日期之间的日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863540/

相关文章:

javascript - 如何使用 React JS 迭代在 UI 中作为 this.state.data 访问的 Java hibernate DAO 返回的列表?

javascript - 有效地将基于字符串的时间转换为毫秒

javascript - 当另一个对象聚焦时为一个对象设置动画

javascript - 不应该是变量的 undefined variable 错误

javascript - React - 检查元素在 DOM 中是否可见

javascript - 在将 fitBounds() 与 Google Maps API V3 结合使用后使用 setZoom()

javascript - 使用原型(prototype)通过 Ajax 提交表单并更新结果 div

javascript - 链式延迟/队列不起作用?

javascript - 在 val 中设置变量

php - Mod_重写: How to see the variables content?