wxzz666 2022-09-30 10:57
浏览 20
已结题

windows python ntp时间同步问题

关于使用python中ntplib实现ntp时间同步的问题

关于使用python中ntplib实现ntp时间同步的问题

使用os.system()将系统时间修改之后,再查看本机与ntp服务器之间的offset情况,感觉依然很大,但是系统时间明明也修改成功了,这是为什么?

代码来源:https://www.cnblogs.com/xiao-tou-ming/p/15722924.html

import ntplib,os
from time import sleep,strftime,localtime
from datetime import datetime
 
 
def get_ntpserver_time(ntserver):
    ntp_client = ntplib.NTPClient()
    try:
        ntp_stats = ntp_client.request(ntserver)
    except:
        return None,None
    if ntp_stats:
        fmt_time = strftime('%X', localtime(ntp_stats.tx_time))
        fmt_data = strftime(('%Y-%m-%d'), localtime(ntp_stats.tx_time))
        return fmt_time, fmt_data
 
def set_system_datetime(date,time):
    os.system(f'date {date}')
    os.system(f'time {time}')
if __name__=='__main__':
    ntp_sever='ntp.aliyun.com'
    time,date=get_ntpserver_time(ntp_sever)
    if date and time:
        host_cur_datetime=datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        set_system_datetime(date,time)
        print(f'已成功将本机时间由{host_cur_datetime}更改为{date} {time},时间戳来源{ntp_sever}')
        # sleep(10)
    else:
        print('出现未知错误!!!!!!')

运行结果及offset情况

img

img

几个问题:

1.是我查看时间的方式不对吗?
2. 根据我们之前实用的情况,NTP时间同步理论上达到毫秒级的精度是完全没问题,但是实用的时候同步的offset经常实在好几百毫秒,这是为啥?
2.我做这个的本意是想通过通过ntp发回的时间ntp_stats.tx_time直接修改系统时间达到时间同步,或者获取到ntpserver的offset情况,用这个offset量对本地系统时间做补偿来修改本地时间达到时间同步,但是我突然想到,既然NTP能获取client到server的offset情况,那为什么当初设计NTP的人不直接用offset让他做到完全同步呢?或许我的这个想法本身就是个无解的问题?!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月8日
    • 创建了问题 9月30日

    悬赏问题

    • ¥15 关于下拉菜单选项关联的问题
    • ¥15 如何修改pca中的feature函数
    • ¥20 java-OJ-健康体检
    • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
    • ¥15 使用phpstudy在云服务器上搭建个人网站
    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
    • ¥15 画两个图 python或R