Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

157
Visualizações
Convertir fecha mal formateada en javascript

Estoy tratando de ocultar los listados de casas abiertas en mi mapa que ya han ocurrido. La única información de fecha que tengo se ve así:

 Public: Sat Sep 18, 10:00AM-2:00PM

Necesito poder comparar esta fecha con la de hoy para poder crear una declaración if para ocultar las jornadas de puertas abiertas vencidas.

Usando este código pude cortar el texto inicial:

 const str = 'Public: Thu Feb 11, 10:00AM-2:00PM'; const opdate = (str.substr(8)); console.log(opdate); // Displays "Thu Feb 11, 10:00AM-2:00PM"

Aquí es donde ahora estoy atascado... No puedo encontrar la manera de convertir esto a otro formato para poder compararlo con la fecha de hoy. Falta el año, lo que estoy seguro causará problemas hacia el final de cada año, y tiene una hora de finalización que realmente no es necesaria, ya que solo necesito comparar la fecha real con la fecha de hoy.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede crear una marca de tiempo para la fecha en el mismo formato que la marca de tiempo que tiene y ver si está en la cadena, por ejemplo

 // Return date in format DDD MMM D, eg Thu Feb 11 function openHouseFormat(date = new Date()) { let {month, weekday, day} = new Intl.DateTimeFormat('en',{ weekday:'short', month: 'short', day: 'numeric' }).formatToParts(date).reduce((obj, part) => { obj[part.type] = part.value; return obj; }, {}); return `${weekday} ${month} ${day}`; } // Check if date is in string, eg // is Thu Feb 11 in Public: Thu Feb 11, 10:00AM-2:00PM function isSameDay(openHouseDate, date = new Date()) { return new RegExp(openHouseFormat(date)).test(openHouseDate); } // Date to test let openHouseDate = 'Public: Thu Feb 11, 10:00AM-2:00PM'; console.log(isSameDay(openHouseDate, new Date(2021,1,11))); // true // Test today, ie not 2021-02-11 console.log(isSameDay(openHouseDate, new Date())); // false

En lugar de una expresión regular, podría usar indexOf , que podría ser un poco más eficiente.

Dado que la fecha de "puertas abiertas" es una subcadena de Date.prototype.toString , puede simplificar las cosas para:

 function isSameDate(publicString, date = new Date()) { return publicString.indexOf(date.toString().slice(0,10)) != -1; } // Example let publicString = 'Public: Sat Sep 18, 10:00AM-2:00PM'; [new Date(2021,8,18), // 18 Sep new Date() // today ].forEach(d => console.log(isSameDate(publicString, d)));

El año realmente no es necesario ya que el "sábado 18 de septiembre" solo ocurrirá aproximadamente una vez cada 7 años (el último fue en 2014, el próximo es en 2027).

about 4 years ago · Juan Pablo Isaza Relatório

0

algo como eso ?

 let {open,close} = get_OpenCloseDates('Public: Thu Feb 11, 10:00AM-2:00PM') console.log( 'open ->', open.toLocaleString() ) console.log( 'close ->', close.toLocaleString() ) function get_OpenCloseDates( str ) { let year = new Date().getFullYear() , [wD,mth,d,h1,m1,h2,m2] = str.substr(8).split(/[\s,-]+|:/) ; return ({open: cDate(mth,d,h1,m1,year), close: cDate(mth,d,h2,m2,year)}) function cDate(mth,d,h,m,y) { let mN = new Date(`${mth} 1, ${y}`).getMonth() return new Date( y, mN, +d, +h +(m.includes('PM')?12:0),parseInt(m),0) } }

about 4 years ago · Juan Pablo Isaza Relatório

0

Bien, aquí está la solución que se me ocurrió y que se basó en la primera sugerencia de @Mister Jojo. Esto toma mi fecha mal formateada, agrega el año actual y luego la compara con hoy para que pueda hacer una regla if else. Gracias por la ayuda de todos. Me encanta este sitio.

 const str = 'Public: Tue Dec 21, 10:00AM-2:00PM'; const [weekday,month,day,h1,h2] = str.substr(8).split(/[\s,-]+/); var d = new Date(); var n = d.getFullYear(); var openhousedate = [month,day, n].join(" "); var formatted = openhousedate; //results in MMM DD YYYY const javaScriptRelease = Date.parse(formatted); const javaScriptRelease2 = Date.parse("2021/09/20"); document.write(javaScriptRelease + "<br>"); document.write(javaScriptRelease2 + "<br>"); console.log(javaScriptRelease2); if (javaScriptRelease2 > javaScriptRelease) { document.write(' its in the past '); } else { document.write(' open house is coming up '); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda