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

182
Visualizações
Js devuelve la fecha de inicio y la fecha de finalización en una cadena

Tengo cadenas como esta:

 (Feb 28-Mar 1) (Mar 2-3)

Me gustaria que me devuelvan un objeto como se puede ver a continuacion, alguien que me de alguna sugerencia como puedo hacer?

 function rD(text){ let date = text.replace('(', '').replace(')', '').split(' '); //const [start, end] = date[2].split("-").map(Number); return date; } console.log(rD("(Feb 28-Mar 1)")) console.log(rD("(Mar 2-3)"))

Devolver:

 [ { month: 2, day: 28 }, { month: 3, day: 1 } ] [ { month: 3, day: 2 }, { month: 3, day: 3 } ]
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Quitaría los paréntesis primero y luego los dividiría por /[ -]/ . De esta manera obtienes una matriz en una de estas dos formas.

 ["Feb", "28", "Mar", "1"]

o

 ["Mar", "2", "3"]

Ahora, si la matriz tiene 4 elementos, el primero y el tercero son siempre el mes y el segundo y el siguiente son el día. Si la matriz tiene 3 elementos, el primero es un mes tanto para el inicio como para el final, el segundo y el tercero son los días.

Para obtener el número del mes, puede realizar una búsqueda simple como

 { Jan:1, Feb:2, ... } 

 let months = { Jan: 1, Feb: 2, Mar: 3 /* you get the idea*/} let spans = ["(Jan 28 - Feb 3)", "(Mar 1-3)"] let parse = (span) => { let parts = span.replace(/[()]/g, "").split(/[ -]/).filter(x => !!x); switch (parts.length) { case 4: return [{month: months[parts[0]], date: +parts[1]}, {month: months[parts[2]], date: +parts[3]}]; case 3: return [{month: months[parts[0]], date: +parts[1]}, {month: months[parts[0]], date: +parts[2]}]; default: return undefined; } } console.log(parse(spans[0])); console.log(parse(spans[1]))

about 4 years ago · Juan Pablo Isaza Relatório

0

Sugeriría usar un patrón de expresiones regulares para analizar cada tramo.

De esto podemos obtener startMonth, startDay, endMonth, endDay. Luego podemos crear una función getMonthNumber() para convertir el nombre del mes abreviado (enero, febrero, etc.) en un número.

 function getMonthNumber(month) { const lookup = { jan: 01, feb: 02, mar: 03, apr: 04, may: 05, jun: 06, jul: 07, aug: 08, sep: 09, oct: 10, nov: 11, dec: 12}; return lookup[(month + '').toLowerCase()] } function parseSpan(str) { const pattern = /\(([az]{3})\s+(\d{1,2})\-([az]{3})?\s?(\d{1,2})\)/i const [, startMonth, startDay, endMonth, endDay] = str.match(pattern); return [ { month: getMonthNumber(startMonth), day: +startDay }, { month: getMonthNumber(endMonth || startMonth), day: +endDay } ]; } let testInputs = [ '(Feb 28-Mar 1)', '(Mar 2-3)', '(Sep 28-Oct 31)', '(Jan 3-17)' ] testInputs.map(parseSpan).forEach(span => console.log(span))
 .as-console-wrapper { max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Puedes probar esto

 function rangeCalcFunc(range = null) { if(range && range.length){ const [start, end] = range.substring(1, range.length-1).split("-"); console.log(start);console.log(end); const [startMon, startDt] = start.split(" "); const [endMon, endDt] = end.split(" "); return [ { month: calcMonthInNumber(startMon.trim()), date: startDt }, { month: calcMonthInNumber(endMon.trim()), date: endDt } ] } } function calcMonthInNumber(month) { switch(month.toLowerCase()){ case 'jan': return '01' case 'feb': return '02' //add for other months default: break; } } console.log(rangeCalcFunc("(Jan 28-Feb 1)"));

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