如何在JavaScript中计算两个日期之间的天数

214 阅读1分钟

我有这样一个问题:如何计算2个日期之间的天数?

特别是,我想根据入住日期和退房日期来计算一个人租房和睡觉所需的天数。

我看了不同的解决方案,考虑到所有与日期有关的问题(包括夏令时),给我的问题最少的是:从起始日期开始,我们增加一天,直到该日期代表结束日期之后的日期。

代码是这样的。

const numberOfNightsBetweenDates = (startDate, endDate) => {
  const start = new Date(startDate) //clone
  const end = new Date(endDate) //clone
  let dayCount = 0

  while (end > start) {
    dayCount++
    start.setDate(start.getDate() + 1)
  }

  return dayCount
}

我首先克隆我们得到的日期,因为日期是对象,我们得到对该对象的引用。这意味着在函数中使用setDate() ,也会影响到这个函数之外的变量--这不是我们所期待的事情

这就是了。

如果你想得到2个日期之间的天数(比如,今天到明天是2天),只需将while (end > start) 改为while (end >= start) 。这样就可以了。或者将dayCount 的起点增加到1