JavaScript 获取两个日期之间的天数

标签 javascript date

我有两个约会 Sun Mar 08 2020 05:30:00 GMT+0530 (India Standard Time) Sat Mar 14 2020 05:30:00 GMT+0530 (India Standard Time)当我用条件循环这两个日期时,我想获得这两天之间的 7 天。但它只返回到星期五。

下面我添加了我的代码片段有人帮助我出了什么问题。

getDaysArray = (start, end) => {
    console.log(start,end)
    for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
      console.log(dt);
      arr.push(new Date(dt.setHours(23, 59, 59, 0)));
    }
    console.log("array=>"+arr)
    return arr;
  };

最佳答案

因为 setHours() 修改日期对象,因此通过将小时设置为午夜之前,循环条件会提前停止一次迭代;你需要先复制一份:

getDaysArray = (start, end) => {
    for (var arr = [], dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
        let newDate = new Date(dt);
        arr.push(new Date(newDate.setHours(23, 59, 59, 0)));
    }
    return arr;
};
console.log(getDaysArray(new Date('Sun Mar 08 2020 05:30:00 GMT+0530 (India Standard Time)'), new Date('Sat Mar 14 2020 05:30:00 GMT+0530 (India Standard Time)')));


如果您打算使用生成器,则必须做同样的事情:

function* getDates(start, end) {
  for (let dt = start; dt <= end; dt.setDate(dt.getDate() + 1)) {
    yield new Date(dt)
  }
}

startDate = new Date('Sun Mar 08 2020 05:30:00 GMT+0530 (India Standard Time)');
endDate = new Date('Sat Mar 14 2020 05:30:00 GMT+0530 (India Standard Time)');

console.log(Array.from(getDates(startDate, endDate), dt => new Date(dt.setHours(23, 59, 59, 0))));

关于JavaScript 获取两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60588684/

相关文章:

javascript - React.js - 在点击事件中查找映射元素的 ID

javascript - 使用 JavaScript 插入 HTML

C - 如何将无符号整数秒转换为日期字符串

php - 如何添加表单提交时间

python - 如何使用时区感知日期过滤模型?

r - 将scale_color与类日期的变量一起使用会产生错误:as.Date.numeric(value):必须提供'origin'

javascript - Node.js、Jsdom、HttpAgent 的内存使用情况

javascript - 为什么 CRM 显示已定义为隐藏的部分?

javascript - 将 JavaScript 多维数组转换为 Java 数组

sql - Oracle 日期 - SQL plus - 更改 INSERT 语句中使用的日期格式