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

168
Vistas
Analizando ISO-Date de Wikidata en JS

¿Qué posibilidades hay para analizar una cadena ISO de una fecha en Javascript, si la fecha también puede ser BC?
Tengo fechas de Wikidata que se ven así, por ejemplo (pero también son posibles otros formatos ISO): -0709-01-01T00:00:00Z

Esto es demasiado antiguo para Date.parse, e incluso las bibliotecas como Luxon o Moment no pueden hacer nada aquí.
Me gustaría poder consultar año, mes, día, hora y minuto en una zona horaria deseada.

Ahora podría hacer esto creando una expresión regular y analizando la cadena con ella, pero con las muchas variaciones posibles, veo el peligro de no incluir todo.
Tampoco he encontrado una expresión regular en Internet que pueda manejar todo.

¿Alguien conoce una biblioteca u otra solución que pueda usar aquí?

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

0

"-0709-01-01T00:00:00Z" no es coherente con elformato definido en ECMA-262, por lo que el análisis depende de la implementación.

Según ECMA-262, donde el año tiene un signo (es decir, precedido por + o -), debe usar el formato de año expandido y tener 6 dígitos, por ejemplo

 new Date('-000709-01-01T00:00:00Z')

funciona en Safari, Firefox y Chrome al menos.

Entonces puede analizar la cadena usted mismo o expandir el año a 6 dígitos. Este último requiere análisis y reformateo, por lo que también podría analizarlo y evitar el analizador integrado yendo directamente al constructor, por ejemplo.

 function parseUTC(d) { let [Y, M, D, H, m, s] = d.match(/\d+/g); let sign = /^-/.test(d)? -1 : 1; return new Date(Date.UTC(sign*Y, M-1, D, H, m, s)); } let d = '-0709-01-01T00:00:00Z'; // -000709-01-01T00:00:00.000Z console.log(parseUTC(d).toISOString()); // Alternatively… console.log(new Date(d.replace(/^-/,'-00')).toISOString());

Mientras que el segundo método "funciona", creo que el primer método es más robusto ya que no depende de la cantidad de dígitos del año, mientras que el segundo asume que son 4 dígitos y no maneja decir "+2020-10-23T00: 00:00Z".

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