Tengo dos proyectos, uno escrito en JS y otro en Python. Tengo una funcionalidad que requiere calcular la diferencia horaria UTC actual proveniente de ambos proyectos. Cuando compruebo la hora UTC actual, noto que siempre hay una diferencia exacta, y espero que sea casi igual.
El cálculo de la diferencia horaria se realiza en el proyecto JS. Usando un websocket, obtengo la hora UTC del proyecto Python y Math.round(new Date().getTime()) . La diferencia es casi siempre la misma, pero también inaceptable.
Así es como obtengo la hora UTC de Python:
time = datetime.datetime.now(datetime.timezone.utc) time = time.replace(tzinfo=datetime.timezone.utc) time = time.timestamp()Estoy ejecutando el proyecto JS en mi entorno WSL de Windows. Cuando ejecuto el proyecto Python desde un contenedor docker local (WSL), obtengo una diferencia de 7,02 segundos. Cuando, en cambio, ejecuto el proyecto Python desde un contenedor LXC en mi raspberry pi, obtengo alrededor de 3,04 segundos.
Necesito tener esta diferencia igual al segundo. ¿Hay algo que pueda hacer al respecto?
Resolví esto usando ntpdate
Instalé este paquete apt install ntpdate y ejecuté ntpdate -u pool.ntp.org . Qué hace este comando para sincronizar el reloj de su sistema. Hice esto en mis dos sistemas y no tuve problemas con la marca de tiempo utc no coincidente.
Por supuesto, me pregunto si, cuando se ejecuta JS en un dispositivo Android, ¿se sincronizará ese sistema también? Supongo que sí por ahora :)