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

141
Visualizações
Calcule el número de días de una cadena como '1y2m3d', '2m3d', '1y3d', '1y' o simplemente '3d'

Quiero crear un sistema de filtrado para mi grilla en javascript. Mi problema es que tengo una cadena que contiene un número de años, meses y días. Me gustaría transformar esta cadena al formato de número de días. Es decir 1y1m2d = 1*365+1*30+2 , 1y2d = 1*365+2 u otra combinación como esta.

No estoy exactamente seguro de cómo manejar esto. Intenté crear una expresión regular para eso, sin embargo, no sé cómo distinguir si el grupo es por año o meses, etc.

Regex se ve así: /(\d+y)?(\d+m)?(\d+d)?/ sin embargo, con esta solución, el problema es que no puedo saber si el grupo es por años, meses etc.

La segunda solución que probé fue usar .replace y luego pasarlo a través math.eval() pero esto resultó no funcionar para mí, no estoy seguro de por qué.

 let result = stringFormat.replace(/y|m|d/, function (x) { return x === 'y' ? '*365' : x === 'm' ? '*12' : '*30'; });

¿Qué piensas sobre esto? ¿Cuál sería el mejor enfoque aquí?

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

0

Puedes usar

 const stringFormat = '1y1m2d'; let result = stringFormat.replace(/[ymd]/g, function (x, index, source) { return (x === 'y' ? '*365' : x === 'm' ? '*30' : '')+(index !== source.length-1 ? '+' : ''); }); console.log(result) // => 1*365+1*30+2

Notas:

  • /[ymd]/g coincide con todas las apariciones de y o m o d en la cadena
  • Hay tres argumentos utilizados en la función de devolución de llamada: x representa el valor de coincidencia, el index es la posición de inicio de coincidencia y la source es el valor de cadena de entrada
  • Si coincide y , el reemplazo es *360 y + si la coincidencia no está al final de la cadena, si coincide m , el reemplazo es *30 y + , y si coincide d , no se agrega ningún multiplicador.
  • (index !== source.length-1 ? '+' : '') comprueba si la coincidencia está al final de la cadena y añade + si es necesario. Funciona así porque la coincidencia siempre es un solo carácter.
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