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

490
Visualizações
Cómo validar la fecha futura de vencimiento de la tarjeta en javascript

Debo agregar una validación para el vencimiento de la tarjeta donde debo mostrar un mensaje de error si la tarjeta está a punto de vencer dentro de los 3 meses a partir de la fecha actual

ex:

 (month/year)1221 input --> false (invalid) 1121 input --> false (invalid) 122 input --> false (invalid) 221 input --> true (valid) 222 input --> true (valid)

Desde el backend, este es el valor que obtengo valor = 424 --> 4 es el mes y 24 es el año que es válido y si desde el backend obtengo 1121 ---> 11 es el mes y 21 es el año que es inválido

¿Cómo validar si la fecha 1121 está dentro de los 3 meses?

A continuación se muestra la solución que estoy usando, pero no encuentro otras soluciones.

 const d = new Date(); let today = d.getDate(); expValue = 424; const originalValue = expValue.toString().split(/(?=(?:.{2})+$)/g); if ( originalValue[0] >= today.month.toString() + 3 || originalValue[1] === today.year.toString() ) { return this.sanitizer.bypassSecurityTrustHtml( '<span class="text-danger">' + ('0' + originalValue[0]).slice(-2) + '/' + originalValue[1] + '</span>' ); } else { return this.sanitizer.bypassSecurityTrustHtml( ('0' + originalValue[0]).slice(-2) + '/' + originalValue[1] ); } }

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Usando las entradas originales que diste, puedes hacer algo como esto:

 let inputs = ['12/21', '11/21', '01/22', '02/21', '12/22']; const parseDate =(e)=>{ return new Date(e.replace('/', '/1/')); }; const getDiff = (e)=>{ let curr = new Date(); let dt = parseDate(e); return (dt.getMonth() - curr.getMonth() + (12 * (dt.getYear() - curr.getYear()))) > 3; } inputs.forEach(el=>console.log(`${el} >> ${getDiff(el)}`));

Si sus entradas están en un formato diferente o si tiene que tener en cuenta las cadenas que no siempre tienen la misma longitud, es posible que deba ajustar la función parseDate. Si está trabajando con una cadena de longitud variable sin el "/" incluido, entonces puede intentar algo como esto, usando las nuevas entradas que proporcionó:

 let inputs = ['1221', '1121', '122', '221', '222']; const parseDate =(e)=>{ if(e.length==3) { e = '0'+e; } return new Date(`${e.substring(0,2)}/1/${e.slice(-2)}`); }; const getDiff = (e)=>{ let curr = new Date(); let dt = parseDate(e); return (dt.getMonth() - curr.getMonth() + (12 * (dt.getYear() - curr.getYear()))) > 3; } inputs.forEach(el=>console.log(`${el} >> ${getDiff(el)}`));

Modifico la función parseDate para rellenar la cadena si la longitud es 3 (creo que siempre será 3 o 4), luego creo una fecha a partir de los dos primeros caracteres y los dos últimos caracteres, luego devuelvo eso, y todo lo demás es lo mismo.

over 4 years ago · Santiago Trujillo Relatório

0

Creo que la mejor manera de hacerlo es traducir las fechas en unidades que se adapten al problema. JS date getYear() da meses desde 1990, y esa es una unidad común prácticamente útil.

Ponga la fecha de la cadena de entrada y la fecha actual en unidades de meses desde 1990, luego compare...

 const monthsSince1900 = string => { let chars = string.split(''); let month = +chars.slice(0, -2).join(''); let year = +chars.slice(-2).join(''); return 12 * (100 + year) + month }; const currentMonthsSince1990 = () => { let d = new Date(); return 12 * d.getYear() + d.getMonth() + 1; } const isExpiryValid = string => { let now = currentMonthsSince1990() let exp = monthsSince1900(string); return exp > now + 3 } console.log(isExpiryValid('1121')); // 11/21 will expire soon console.log(isExpiryValid('1221')); // 12/21 will expire soon console.log(isExpiryValid('122')); // 1/22 will expire soon console.log(isExpiryValid('222')); // 2/22 is good console.log(isExpiryValid('322')); // 3/22 is good

over 4 years ago · Santiago Trujillo 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