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

257
Views
Javascript: compare la fecha actual convertida a UTC con la cadena de fecha

Necesito comparar la fecha de entrada, que es el formato de cadena UTC con la fecha actual en javascript. Sin embargo, si intento algo, sigo obteniendo 2 horas de diferencia.

comparación de fechas del navegador

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

0

Parece que se encuentra en la zona horaria Europe/Berlin o similar y actualmente tiene un desplazamiento positivo de 2 horas con respecto a UTC.

La marca de tiempo en formato ISO debe especificar la zona horaria como sufijo. Z sería UTC. Sin embargo, a su marca de tiempo de measurementTimestamp le falta el sufijo, y la new Date lo interpreta como "la zona horaria local actual" (en su caso, +02:00), por lo que obtiene una discrepancia aquí.

Puede agregar la Z faltante a la marca de tiempo de measurementTimestamp para resolver este problema:

 (new Date('2021-09-24T15:38:18.569Z') - new Date('2021-09-24T15:37:46.612Z')) / 1000 // ^ // Result: 31.957

Importante: esto no es lo mismo que eliminar la Z de la otra marca de tiempo porque entonces compararía dos horas en zonas horarias locales (y, de hecho, horas que son irrelevantes para cualquier cosa que realmente le interese, porque son el resultado de interpretar las horas UTC como horas locales que luego apuntan a un momento diferente en el tiempo).

Puede pensar que esto no importa porque si ambos son locales ahora, la compensación debería cancelarse, ¿verdad? ... ¡pero este no es el caso si hay un límite de horario de verano entre las marcas de tiempo que compara! Si ambos son UTC, son absolutos (no hay horario de verano en UTC como tal; sería en Europe/London , pero no es lo mismo), pero en su zona horaria local puede hacer que los relojes se muevan hacia adelante y hacia atrás. hora dos veces al año ( Europe/Berlin es +02:00 durante medio año y +01:00 el resto del tiempo).

Vea estos resultados que obtengo (estoy en Europe/Berlin ):

 (new Date('2021-03-28T03:00:00Z') - new Date('2021-03-28T01:00:00Z')) / 1000 // Result: 7200 (new Date('2021-03-28T03:00:00') - new Date('2021-03-28T01:00:00')) / 1000 // Result: 3600 (!!!)

El reloj se adelantó el 28 de marzo de 2021 de 02:00 a 03:00 aquí. Entonces, comparar estas dos horas de 03:00 y 01:00 con la zona horaria local me da solo una hora de diferencia en lugar de dos. Si ahora tenía la intención de comparar las 03:00 UTC con las 01:00 UTC , obtuve un resultado totalmente incorrecto y puede arruinar mi día.

Permítanme agregar un ejemplo más, incluso peor, a esto:

 (new Date('2021-03-28T03:30:00Z') - new Date('2021-03-28T02:45:00Z')) / 1000 // Result: 2700 (new Date('2021-03-28T03:30:00') - new Date('2021-03-28T02:45:00')) / 1000 // Result: -900 (???)

03:30 deberían ser 45 minutos (2700 segundos) después de las 02:45, ¿verdad? Entonces, ¿cómo es que ahora tenemos un número negativo de -15 minutos? Bueno, en mi hora local, las 02:45 ni siquiera existen porque después de las 01:59 llegaron las 03:00 de ese día... y se trata igual que si intentaras establecer una fecha como el 31 de noviembre en JavaScript. (que se manejaría como el 1 de diciembre): se da la vuelta y se trata igual que las 03:45.

about 4 years ago · Juan Pablo Isaza Report

0

Bien, probablemente lo entendí: necesito eliminar el carácter Z del formato toISOString. Funciona, pero no estoy seguro, si es el enfoque correcto.

(nueva Fecha(nueva Fecha().toISOString().slice(0,-1)) - nueva Fecha(medida.medidaTimestamp))/1000

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!