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

237
Views
Las fechas de Javascript funcionan de manera extraña (al convertir milisegundos a segundos)

Tengo fecha futura y fecha actual. Ambas fechas son siempre el mismo día pero con horas diferentes. Mi objetivo es obtener la diferencia de segundos entre la fecha futura y la fecha actual como mi valor de cuenta regresiva para un temporizador. El problema es que cuando calculo obtengo resultados inexactos.

En mi fórmula de investigación para convertir milisegundos a segundos es millis / 1000.0 pero nada de esto devuelve un resultado de cuenta regresiva preciso;

Mi código

 let now = (new Date().getTime() / 1000.0); let futureDate = (new Date('2022-04-01T17:41:47.000Z').getTime() / 1000.0); let difference; difference = (futureDate - now); // not accurate difference = parseInt(difference, 10); // not accurate

Me gustaría que la solución funcione normalmente en todas las zonas horarias y que herede la zona horaria del sistema local en lugar de la zona horaria de fecha futura.

Cualquier ayuda será apreciada mucho.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Quiero verificar si sabe que los formatos de fecha como "0000-00-00T00: 00: 00.000Z" siempre se reconocen como hora universal (hora del Reino Unido).

Intente usar +HH:MM en lugar del último carácter Z.

Por ejemplo, si se encuentra en el este de EE. UU., sería "2022-04-01T17:41:47.000-05:00".

about 4 years ago · Juan Pablo Isaza Report

0

Debe agregar la zona horaria del sistema, así:

 let date = new Date('2022-04-01T17:41:47.000Z'); let now = new Date().getTime() / 1000.0; let futureDate = (date.getTime() + date.getTimezoneOffset() * 60000) / 1000.0; let difference; difference = (futureDate - now); // not accurate difference = parseInt(difference, 10); // not accurate console.log(difference);

about 4 years ago · Juan Pablo Isaza Report

0

La marca de tiempo '2022-04-01T17:41:47.000Z' se analizará como compensación +0 (también conocida como UTC o GMT) debido a la "Z" final, que denota una compensación de +0. La diferencia entre ahora y entonces en milisegundos es:

 let diff = new Date('2022-04-01T17:41:47.000Z') - Date.now();

donde un valor negativo para diff significa que la marca de tiempo está en el pasado. Para convertir la diferencia a segundos, divida el resultado por 1.000.

Si se ejecuta exactamente a la misma hora, el valor de diff será el mismo independientemente de la configuración del sistema para la compensación local (permitiendo, por supuesto, la precisión del reloj).

Para que la marca de tiempo se analice como local, elimine la Z:

 let diff = new Date('2022-04-01T17:41:47.000') - Date.now();

Sin embargo, eso cambia el instante en el tiempo representado por la marca de tiempo por el desplazamiento local, por lo que devolverá un valor diferente para diff para cada sistema con un desplazamiento diferente. Eso no parece algo sensato dado que la marca de tiempo tiene una compensación y, por lo tanto, pretende representar un solo instante en el tiempo, no uno de muchos instantes diferentes (tantos como compensaciones diferentes, tal vez cientos si las compensaciones históricas son incluido) dependiendo del desplazamiento del host.

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!