Estoy tratando de verificar si la fecha dada está dentro de las dos fechas. Intenté según los recursos en línea que encontré usando los métodos a continuación, independientemente del código que probé y devolvió Falso, así que alguien podría decirme cómo podemos lograr esto. Gracias
// *For example* - Datetocheck = today's date Startdate = '09/05/2022' Enddate ='31/05/2022' var TodayDate = new Date(); //var date = now.toLocaleDateString(); var dd = String(TodayDate.getDate()).padStart(2, '0'); var mm = String(TodayDate.getMonth() + 1).padStart(2, '0'); //January is 0! var yyyy = TodayDate.getFullYear(); TodayDate = dd + '/' + mm + '/' + yyyy; if(dateStart!=null&&dateStart!=undefined){ var year=dateStart.getFullYear(); var month=(dateStart.getMonth()+1); var day=dateStart.getDate(); var startdate = day + '/' + month + '/' + year; } if(dateEnd!=null&&dateEnd!=undefined){ var year1=dateEnd.getFullYear(); var month1=(dateEnd.getMonth()+1); var day1=dateEnd.getDate(); var enddate = day1 + '/' + month1 + '/' + year1; } if(TodayDate > startdate && TodayDate < enddate { return true; // alert("Within the range"); }else{ return false; // alert("Outside the range"); }Estás comparando cadenas. Si usó el orden AAAA-MM-DD, eso funcionaría, pero como está usando el orden DD/MM/AAAA, no funciona. Las cadenas se comparan "alfabéticamente" (incluidas las letras que no están ordenadas tal como están en el juego de caracteres), lo que significa que, por ejemplo, el día 20 de cualquier mes será "mayor que" el día 10 de cualquier mes, incluso si los dos meses están en el orden opuesto dentro del año y/o las fechas están separadas por años, solo porque 2 viene después de 1.
Simplemente usaría objetos Date directamente.
const startDate = new Date(2022,4,9); // 0=January, so May=4 const endDate = new Date(2022,4,31); let todayDate = new Date(); if (startDate <= todayDate && todayDate <= endDate) { console.log("In range."); } Además, arriba estoy haciendo una prueba y luego registrando un mensaje si la prueba es verdadera, pero si desea una función que solo devuelva verdadero o falso, no necesita una declaración if . Simplemente devuelva el valor de la expresión booleana en sí:
return startDate <= todayDate && todayDate <= endDate;