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

我遇到了一个问题:如何计算两个日期之间的天数?

特别是,我想计算一个人租房和睡在其中所需要支付的住宿天数,具体取决于签到地点日期,以及结帐日期。

我研究了不同的解决方案,考虑到所有与日期有关的问题(包括DST),该解决方案给我带来最少问题的解决方案是:从开始日期开始,我们加一天,直到该日期表示结束日期之后的日期。

这是代码:

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天),则只需进行更改while (end > start)while (end >= start)。那行得通。或增加dayCount起点1

免费下载我的JavaScript初学者手册


更多js教程: