Cách tính số ngày giữa 2 ngày trong JavaScript

Tôi gặp sự cố này: làm cách nào để tính số ngày giữa 2 ngày?

Đặc biệt, tôi muốn đếm số đêm mà một người phải trả để thuê nhà và ngủ trong đó, tùy thuộc vào lượt đăng ký.ngày, và ngày thanh toán.

Tôi đã xem xét các giải pháp khác nhau và giải pháp mang lại cho tôi ít vấn đề nhất, xem xét tất cả các vấn đề về ngày tháng (bao gồm cả DST), là: bắt đầu từ ngày bắt đầu, chúng tôi thêm một ngày cho đến khi ngày biểu thị một ngày sau ngày kết thúc .

Đây là mã:

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 }

Đầu tiên tôi sao chép ngày tháng mà chúng tôi được đưa ra, bởi vì ngày tháng là các đối tượng, và chúng tôi nhận đượctài liệu tham khảođến đối tượng đó. Điều này có nghĩa là sử dụngsetDate()trong hàm cũng sẽ ảnh hưởng đến biến bên ngoài hàm này - không phải là điều mà chúng tôi mong đợi!

Đó là nó.

Thay vào đó, nếu bạn muốn nhận số ngày giữa 2 ngày (giả sử từ hôm nay đến ngày mai là 2 ngày), chỉ cần thay đổiwhile (end > start)đếnwhile (end >= start). Rằng sẽ làm việc. Hoặc tăngdayCountđiểm bắt đầu đến1.

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: