【发布时间】:2015-11-27 06:10:19
【问题描述】:
我编写了一个桌面应用程序并使用datetime.datetime.utcnow() 来设置时间戳,但是我最近注意到有些人使用该应用程序得到的结果与我同时运行该程序时得到的结果大相径庭。有什么方法可以在本地获取 UTC 时间而不使用 urllib 从网站获取它?
【问题讨论】:
标签: python datetime timestamp utc
我编写了一个桌面应用程序并使用datetime.datetime.utcnow() 来设置时间戳,但是我最近注意到有些人使用该应用程序得到的结果与我同时运行该程序时得到的结果大相径庭。有什么方法可以在本地获取 UTC 时间而不使用 urllib 从网站获取它?
【问题讨论】:
标签: python datetime timestamp utc
Python 依赖于底层操作系统来提供准确的时钟。如果它不这样做,那么除了绕过 o/s 之外,您别无选择。有一个 NTP 客户端 here 的纯 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 系统时钟与从服务器获取的时钟之间的偏移量,并且只定期轮询以调整时间。
【讨论】:
time.clock() 测量NTPClient() 响应的时间,将其分成两半并将其添加到给定时间。这是准确的。
实际上,ntplib 计算此偏移量时会考虑往返延迟。 它可以通过 NTP 响应的“偏移”属性获得。因此结果应该不会很疯狂。
【讨论】: