Disculpas, soy un novato con Javascript y no pude ver ninguna manera fácil de analizar el 3 de February 03, 2022 at 04:52PM en un objeto Date .
Lo mejor que se me ocurre es usar Regex para dividir cada parte de la cadena en su propio componente y luego crear un nuevo objeto Date . Pero también necesitaré una declaración de switch para analizar el mes.
Necesito hacer esto en JS simple, sin bibliotecas.
Terminé haciendo esto de la manera difícil. Desearía que Javascript admitiera los especificadores de fecha y hora estándar de C para analizar cadenas de fecha, pero supongo que esto tendrá que funcionar:
function getDateObj(inputStr){ const monthObj = { 'Jan':0, 'Feb':1, 'Mar':2, 'Apr':3, 'May':4, 'Jun':5, 'Jul':6, 'Aug':7, 'Sep':8, 'Oct':9, 'Nov':10, 'Dec':11, }; const regexMonth = /(...).*/; const regexDate = /.*?\ ([0-9]{2}).*/; const regexYear = /([0-9]{4})/; const regexHour = /([0-9]{2}):[0-9]{2}(AM|PM)/; const regexMin = /[0-9]{2}:([0-9]{2})(AM|PM)/; const regexAmpm = /[0-9]{2}:[0-9]{2}((AM|PM))/; const month = monthObj[inputStr.match(regexMonth)[1]]; const date = parseInt(inputStr.match(regexDate)[1]); const year = parseInt(inputStr.match(regexYear)[1]); const hour = parseInt(inputStr.match(regexHour)[1]); const min = parseInt(inputStr.match(regexMin)[1]); const ampm = inputStr.match(regexAmpm); let realHour = 0; if (ampm[1] === 'PM') { realHour = parseInt(hour) + 12; } else { realHour = parseInt(hour); } const dateObj = new Date(year, month, date, hour, min, 0); return dateObj; } console.log(getDateObj('February 03, 2022 at 04:52PM').toString()); // "Thu Feb 03 2022 04:52:00 GMT+X (XXX Standard Time)"Bueno, con moment.js puedes analizar tu cadena tal como está y definir el formato. Dirígete a la página de las bibliotecas y abre la consola de desarrollo para jugar con ella.
básicamente quieres hacer esto:
const date = moment('February 03, 2022 at 04:52PM', 'MMMM DD, YYYY at hh:mm A')