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

173
Visualizações
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 Respostas
Responde à pergunta

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 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