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

241
Vistas
¿Por qué en javascript, la nueva fecha EPOCH no está en UTC EPOCH?

Tengo problemas con la precisión de tiempo en mi backend. Aquí hay un ejemplo de código:

 const inputDateString = `2022-05-30 13:45:15` // assume it as UTC without specifying the timezone // we use loadbalancing and auto-scale so our backend engine might be everywhere, // so we dont take local time into account, we always treat date as UTC let systemGetDate = new Date(inputDateString) console.log(systemGetDate.valueOf()) // => 1653893115000, it should be 1653918315000 // 1653893115000 is GMT: Monday, 30 May 2022 06:45:15, but 2022-05-30 13:45:15 in my local time! const inputDateStringWithTimezone = `2022-05-30 13:45:15+00` systemGetDate = new Date(inputDateStringWithTimezone) console.log(systemGetDate.valueOf()) // => 1653918315000, its right now. but only when timezone explicitly specified

¿Podemos hacer que la nueva Fecha (cadena) siempre trate la entrada como UTC, sin convertirla como hora local? Estoy bien, el objeto Date está en hora local, pero al menos getTime o valueOf en UTC de alguna manera.

Actualmente, mi solución alternativa es usar la biblioteca moment.js , puede dar como resultado el resultado que quiero.

pero sé que será malo depender demasiado de otra biblioteca, puede romperse o quedar obsoleta más adelante. ( https://momentjs.com/docs/#/-project-status , el propio funcionario explica que se suspenderá)

alguna solución mejor para solucionar este problema? o debería eliminar todo esto y especificar explícitamente la zona horaria en todo el sistema?

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

0

const inputDateString = `2022-05-30 13:45:15` // assume it as UTC without specifying the timezone

Las marcas de tiempo sin zona horaria o compensación se tratan como locales, no como UTC. El formato de esa marca de tiempo en particular no es compatible con ECMA-262, por lo que el análisis depende de la implementación (consulte ¿Por qué Date.parse da resultados incorrectos? ) y puede dar como resultado una fecha no válida o un valor inesperado.

¿Podemos hacer que la nueva Fecha (cadena) siempre trate la entrada como UTC, sin convertirla como hora local?

Sí, reformateándolo a un formato compatible que el analizador integrado debe tratar como UTC, por ejemplo:

 '2022-05-30T13:45:15Z'

Alternativamente, puede analizarlo usted mismo y pasar los valores a Date.UTC para que se traten como UTC, por ejemplo

 let date = `2022-05-30 13:45:15`; // Reformat and use the built–in parser let reformattedDate = date.replace(' ','T') + 'Z'; console.log(new Date(reformattedDate).toISOString()); // Using Date.UTC let [Y, M, D, H, m, s] = date.split(/\D/); let d = new Date(Date.UTC(Y, M-1, D, H, m, s)); console.log(d.toISOString());

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