【发布时间】:2021-11-28 03:20:50
【问题描述】:
我有两个项目,一个是用 JS 编写的,另一个是用 Python 编写的。我有一个功能需要计算来自两个项目的当前 UTC 时差。当我测试当前的 UTC 时间时,我注意到总是存在精确的差异,我希望它几乎相等。
时间差计算是在JS项目中完成的。使用 websocket,我从 Python 项目中获取 UTC 时间并从中减去 Math.round(new Date().getTime())。差异几乎总是相同的,但也是不可接受的。
这就是我从 Python 获取 UTC 时间的方式:
time = datetime.datetime.now(datetime.timezone.utc)
time = time.replace(tzinfo=datetime.timezone.utc)
time = time.timestamp()
我正在我的 Windows WSL 环境中运行 JS 项目。当我从本地 (WSL) docker 容器运行 python 项目时,我得到了 7.02 秒的差异。相反,当我从树莓派上的 LXC 容器运行 python 项目时,我得到了大约 3.04 秒。
我需要让这个差异等于第二个。有什么我可以做的吗?
【问题讨论】:
-
您是否分别检查了两个环境的系统时间?像这样的差异听起来像是某个地方的时间已经过去了,而不是传输延迟。
-
FWIW,
time.replace(tzinfo=datetime.timezone.utc)完全是多余的;但它应该没有任何影响...... -
嗨@ChrisG。系统时间实际上是不同的。在 Docker 上是 UTC,在我的 WSL 上,我运行 JS 是 CEST。我假设由于我使用的是 UTC 时间,所以我得到了一个独立于系统时间的通用时间。这是正确的吗?
-
@deceze,谢谢!我会检查一下。但是,是的,我认为它不会产生影响,因为差异仍然很小。编辑:是的,没有效果,但更干净!谢谢!
-
在两个系统上配置的 timezone 应该是不相关的,正如您所注意到的。重要的是,他们的 时钟 是否相差约 7 秒?
标签: javascript python date datetime utc