Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

169
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!