13

我编写了一个桌面应用程序并datetime.datetime.utcnow()用于时间戳,但是我最近注意到使用该应用程序的一些人得到的结果与我们同时运行该程序时的结果大不相同。有没有办法在本地获取 UTC 时间而不使用 urllib 从网站获取它?

4

2 回答 2

24

Python 依赖于底层操作系统来提供准确的时钟。如果它不这样做,那么除了绕过 o/s 之外,您别无选择。这里有一个 NTP 客户端的纯 Python 实现。一个非常简单的方法:

>>> import ntplib,datetime
>>> x = ntplib.NTPClient()
>>> datetime.datetime.utcfromtimestamp(x.request('europe.pool.ntp.org').tx_time)
datetime.datetime(2009, 10, 21, 7, 1, 54, 716657)

但是,不断地访问那里的其他 NTP 服务器并不是一件好事。一个好的网民会使用 ntp 客户端库来跟踪 o/s 系统时钟与从服务器获得的时钟之间的偏移量,并且只定期轮询以调整时间。

于 2009-10-21T06:45:09.493 回答
7

实际上,ntplib 计算这个偏移量来考虑往返延迟。它可以通过 NTP 响应的“偏移”属性获得。因此结果应该不会很疯狂。

于 2009-11-11T14:29:05.600 回答