如何使用Python获得准确的UTC时间?

tsl*_*cum 12 python datetime timestamp utc

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

Ned*_*ily 22

Python依赖于底层操作系统来提供准确的时钟.如果不这样做,除了绕过o/s之外,你没有太多选择.有一个纯Python实现NTP客户端的位置.一种非常简单的方法:

>>> 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)
Run Code Online (Sandbox Code Playgroud)

但是,继续打击其他NTP服务器并不是很好.一个好的网民将使用ntp客户端库来跟踪o/s系统时钟与从服务器获得的系统时钟之间的偏移量,并且只定期轮询以调整时间.

  • 这并不能说明提出请求的"往返时间".你想要做的是使用`time.clock()`来测量`NTPClient()`响应的时间,将其分成两半并将其添加到给定时间.那很准确. (2认同)

小智 7

实际上,ntplib计算此偏移量来计算往返延迟.它可以通过NTP响应的"偏移"属性获得.因此结果不应该非常疯狂.