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

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

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