Cómo calcular el número de días entre dos 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, dependiendo de la fecha de entrada y la fecha de salida.
Analicé diferentes soluciones y la que menos problemas me dio, teniendo en cuenta todos los problemas con las fechas (incluido el horario de verano), fue esta: a partir de la fecha de inicio, sumamos 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 una referencia a ese objeto. Esto significa que usar setDate()dentro de la función también afectaría a la variable fuera de esta función, ¡algo que no esperamos con ansias!
Eso es todo.
Si, en cambio, desea obtener la cantidad de días entre dos fechas (por ejemplo, de hoy a mañana hay 2 días), simplemente cambie while (end start)a while (end = start). Eso funcionaría. O aumente el dayCountpunto de partida a 1.
Tips para principiantes de JavaScript
Tal vez te puede interesar:
- Cómo generar un número aleatorio entre dos números en JavaScript
- Cómo esperar el evento DOM listo en JavaScript simple
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo contar el número de propiedades en un objeto JavaScript
Créditos de la imagen http://dbbeebom