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

259
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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