Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

161
Vistas
moment().isValid devuelve verdadero cuando la entrada está en números enteros

Código:

 let modifiedValue = attribute_value; let isISOFormat = moment(new Date(attribute_value), moment.ISO_8601, true).isValid(); if (isISOFormat) { modifiedValue = formatDateShortCustom(moment(attribute_value).toDate()); } return modifiedValue; };

En el código anterior, el valor del atributo puede tener

  1. 2021-09-29T18:30:00.000Z
  2. 080921

Quiero asegurarme de que cuando el valor del atributo esté en (1) formatee el código
modifiedValue = formatDateShortCustom(moment(attribute_value).toDate()); debe ejecutar.

Sin embargo, esta cadena numérica también está causando que isISOFormat sea true , por lo tanto, navegando por el método formatDateShortCustom , que no quiero.

¿Hay algo que esté haciendo mal?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Sugeriría envolver esto en una función isISOFormat() y usar esto para decidir si su entrada es una cadena de fecha ISO 8601.

También sugeriría pasar la entrada directamente al constructor moment(), en lugar de crear una Fecha primero:

 let attribute_values = ['2021-09-28T11:45:00Z', new Date().toISOString(), 20, null, '28/09/2021', 'is this a date?']; function testIsISOFormat() { for(let attribute_value of attribute_values) { console.log(`isISOFormat(${attribute_value}):`, isISOFormat(attribute_value)); } } function isISOFormat(input) { return moment(input, moment.ISO_8601, true).isValid(); } console.log('Testing isISOFormat:'); testIsISOFormat()
 .as-console-wrapper { max-height: 100% !important; top: 0; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar

0

moment.ISO_8601 no está undefined por debajo de la versión 2.7.0 .

Es por eso que moment intenta analizar el valor independientemente de su configuración de la opción de análisis estricto. moment comprueba si la cadena coincide con los formatos ISO 8601 conocidos .

Recomiendo pasar el formato como el segundo argumento de forma explícita.

 console.log(moment('2021-09-29T18:30:00.000Z', 'YYYY-MM-DDTHH:mm:ss.SSSZ', true).isValid()); console.log(moment('080921', 'YYYY-MM-DDTHH:mm:ss.SSSZ', true).isValid());
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda