Cómo calcular el número de días entre 2 fechas en JavaScript

Tuve este problema: ¿cómo calculo el número de días entre 2 fechas?

En particular, quería contar el número de noches que una persona tenía que pagar para alquilar una casa y dormir en ella, según el registro.fechay la fecha de pago.

Miré diferentes soluciones, y la que me dio menos problemas, considerando todos los problemas con las fechas (incluido el horario de verano), fue esta: a partir de la fecha de inicio, agregamos un día hasta que la fecha represente una fecha posterior a la fecha de finalización. .

Aquí está el código:

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 }

Primero clono las fechas que nos dan, porque las fechas son objetos y obtenemos unareferenciaa ese objeto. Esto significa que usarsetDate()en la función también afectaría a la variable fuera de esta función, ¡algo que no esperamos!

Eso es.

Si, en cambio, desea obtener el número de días entre 2 fechas (digamos, hoy a mañana son 2 días), simplemente cambiewhile (end > start)awhile (end >= start). Eso funcionaria. O aumentar eldayCountpunto de partida para1.


Más tutoriales de js: