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 dayCount
punto 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
Cómo calcular el número de días entre dos fechas en JavaScript
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
programar
es
2025-01-22

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente