Tengo una cadena '10:30 AM', ¿cómo la convierto en una cadena para poder usar la función .isBetween() ?
Cada vez que intento hacer new Date(time) o moment(new Date(time)) , aparece "fecha no válida". Además, dice que es una FECHA no válida, ¿tengo que tener una fecha Y una hora para que sea válida? Asumí que .isBetween podría tomar un tiempo.
Las fechas de ECMAScript son solo un desplazamiento en milisegundos desde el 1 de enero de 1970 UTC, por lo que son inherentemente fecha y hora (UTC).
Si está utilizando moment.js, utilícelo también para analizar la cadena. En este caso, debe proporcionar el formato de la cadena utilizando los mismos tokens que para el formato (por ejemplo, h: mm A). Es una buena idea pasar siempre el formato, de lo contrario, puede recurrir al analizador integrado, lo que anula el propósito de usar una biblioteca para analizar.
Cuando se le da solo una hora, moment.js usa la fecha actual para el año, el mes y el día:
let s = '10:30 AM'; // <current date as YYYY-MM-DD> 10:30 console.log(moment(s, 'h:mm A').format('YYYY-MM-DD H:mm')) let time1 = '6:23 AM'; let time2 = '9:18 PM'; let time3 = '10:35 PM'; let format = 'h:mm A'; console.log( moment(time2, format).isBetween(moment(time1, format), moment(time3, format)) ); console.log( moment(time1, format).isBetween(moment(time2, format), moment(time3, format)) ); <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>