首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python将ntp服务器的时间降到毫秒级?

如何使用Python将ntp服务器的时间降到毫秒级?
EN

Stack Overflow用户
提问于 2015-07-06 21:06:30
回答 2查看 7.4K关注 0票数 5

我正在创建一个python模块,它将输出从所选的NTP池服务器到毫秒精度的时间,以演示服务器时间戳的变化。到目前为止,我已经能够将原始服务器时间戳打印到每秒的精度,但是如何获得毫秒精度呢?

代码语言:javascript
复制
ntp_pool = '0.pool.ntp.org', \
       'uk.pool.ntp.org', \
       'ie.pool.ntp.org'

def get_ntp_time():
    for item in ntp_pool:
        call = ntplib.NTPClient()
        response = call.request(item, version=3)
        print(time.ctime(response.orig_time))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-06 21:53:16

for循环可能会为您的结果着色,因为每次迭代都有时间传递。

在任何情况下,ntp响应都是一个具有微秒精度的时间戳,因此限制似乎是在time.ctime内,后者仅限于二次精度。

您可以使用datetime.fromtimestamp代替,也可以选择使用strftime使它更漂亮。我的示例很难模仿现有代码的输出。

代码语言:javascript
复制
from datetime import datetime

def get_ntp_time():
for item in ntp_pool:
    call = ntplib.NTPClient()
    response = call.request(item, version=3)
    t = datetime.fromtimestamp(response.orig_time)
    print(t.strftime("%a %b %d %H:%M:%S.%f"))
票数 6
EN

Stack Overflow用户

发布于 2019-12-18 14:00:50

我认为这里有一些错误:response.orig_time是提出请求的客户机的时间,而不是服务器的时间。参见IETF RFC5905,第23页:"Origin (org):当请求离开服务器时,时间在客户端.“。最新版本的代码应该如下所示

代码语言:javascript
复制
import ntplib
from datetime import datetime, timezone

NTP_SERVERS = ['0.pool.ntp.org', 'uk.pool.ntp.org']

for server in NTP_SERVERS:
    client = ntplib.NTPClient()
    response = client.request(server, version=3)
    print(f"server: {server}")
    print(f"client time of request: {datetime.fromtimestamp(response.orig_time, timezone.utc)}")
    print(f"server responded with: {datetime.fromtimestamp(response.tx_time, timezone.utc)}")

...would给我。

代码语言:javascript
复制
server: 0.pool.ntp.org
client time of request: 2019-12-18 13:58:52.224058+00:00
server responded with: 2019-12-18 13:58:51.289734+00:00
server: uk.pool.ntp.org
client time of request: 2019-12-18 13:58:52.314615+00:00
server responded with: 2019-12-18 13:58:51.377655+00:00

请注意,根据信号传输的距离,如果您查找毫秒,往返延迟(response.delay)可能会很大。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31255633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档