Para determinar si una fecha se encuentra dentro de un rango de fechas, puedes utilizar el método .isBetween()
de Moment.js, que permite comparar una fecha contra dos límites (inicio y fin).
.isBetween()
1. Instala Moment.js si no lo tienes en tu proyecto:
npm install moment
O agrégalo en HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
2. Verifica si una fecha está dentro del rango con .isBetween()
:
const fechaInicio = moment("2023-01-01");
const fechaFin = moment("2023-12-31");
const fechaAComprobar = moment("2023-07-15");
const estaDentroDelRango = fechaAComprobar.isBetween(fechaInicio, fechaFin);
console.log("¿La fecha está dentro del rango?", estaDentroDelRango);
// Resultado: true
En este ejemplo, isBetween()
devuelve true
porque la fecha 2023-07-15
está dentro del rango del 1 de enero de 2023 al 31 de diciembre de 2023.
Por defecto, .isBetween()
excluye los límites de inicio y fin. Puedes cambiar este comportamiento usando un tercer parámetro, que permite especificar inclusividad en las fechas:
")":
incluye el inicio, pero excluye el final.
"(]"
: excluye el inicio, pero incluye el final.
"[]":
incluye ambos límites.
Ejemplo:
const estaDentroDelRangoInclusivo = fechaAComprobar.isBetween(fechaInicio, fechaFin, null, "[]");
console.log("¿La fecha está dentro del rango (inclusive)?", estaDentroDelRangoInclusivo);
// Resultado: true
En este caso, "[]"
incluye tanto fechaInicio
como fechaFin
en el rango de fechas.
Para verificar si una fecha es exactamente igual a los límites o si está fuera del rango, puedes combinar .isSameOrAfter()
y .isSameOrBefore()
:
const estaDentro = fechaAComprobar.isSameOrAfter(fechaInicio) && fechaAComprobar.isSameOrBefore(fechaFin);
console.log("¿La fecha está dentro del rango?", estaDentro);
// Resultado: true
Para más detalles, puedes consultar la documentación oficial de Moment.js, que incluye información sobre métodos avanzados de comparación y manejo de fechas.
Jorge García
Fullstack developer