[TOC]1。概念1.1基本概念时间对我们来说非常重要。我们什么时候做什么?什么时候发生没有时间的概念,生活是混乱的。在日常运维中,我们比较关注告警的时间:什么时候发生的,是什么事故,影响范围,什么时候解决,这些都是有关系的,所以时间的准确性非常非常重要的。你可能想知道,时间是怎么来的?作为一名网络工作者,你可能不是很清楚吧?你只知道NTP吗?什么是标准参考时钟?Timestamp'1573401600',你能看出这是几点吗?原子钟和GPS作为标准参考时钟,全世界都将其作为时钟源。从你的手表或电脑的时间同步到时钟源,中间可能有多层,每一层都叫做“层”,只是准确度不同。当然,我们肯定不是直接与原子钟同步,我们可以选择就近的主时钟源,比如中国/香港等。或者,你公司的内网可能先同步到内网的主时钟服务器,再同步到外网。说完时钟源,就要有个时间标准了。世界上每个国家的时区都不一样,一个时间不能用全世界。GMT(格林威治标准时间):格林威治标准时间,当太阳穿过格林威治子午线(本初子午线)时计算,现在不推荐使用;UTC(UniversalTimeCoordinated):协调世界时,以原子时秒为基准,接近于GMT,称为CoordinatedUniversalTime。为了统一世界时间,1884年的国际经度会议规定,世界分为24个时区(东部12个时区,西部12个时区)。规定英国(格林威治天文台旧址)在零时区(GMT+00),东1-12区,西1-12区,中国北京在东8区(GMT+08)。例如:UTC时间:2019-11-1016:00:00北京时间:2019-11-1100:00:00(UTC+8小时)时钟源和标准时间说完了,下面说说时间同步通信机制。网络时间协议(NTP)是TCP/IP协议族中的一个应用层协议。NTP用于同步一系列分布式时间服务器和客户端之间的时钟。NTP的实现基于IP和UDP。NTP报文通过UDP传输,端口号为123。1.2版本演进版本时间协议号说明NTPv11988年6月,RFC1059首次提出完整的NTP规则和算法,但NTPv1不支持认证和控制消息NTPv2September1989RFC1119支持认证和控制消息NTPv3March1992RFC1305官方介绍了校正原理,改进了时钟选择和时钟滤波算法。NTPv3目前应用广泛,只支持IPv4。NTPv4June2010RFC5905支持IPv4和IPv6,更加安全。2.示例demo2.1先决条件准备三方库:ntplib安装方法:pip3install-i[https://pypi.douban.com/simple/](https://pypi.douban.com/simple/)ntplib环境:Windows+Python32.2完整代码#!/usr/bin/envpython3#-*-coding:UTF-8-*-#欢迎关注微信公众号:点满技术#这里靠谱,有价值,值得信赖免费分享importntplibimportos,datetimehosts=['0.cn.pool.ntp.org','1.cn.pool.ntp.org','2.cn.pool.ntp.org','3.cn.pool.ntp.org']defntp_client():#创建一个实例,NTPClient()是一个类t=ntplib.NTPClient()forhostinhosts:try:#ntpserver可以填写host和域名,建议使用域名#默认端口为ntp,版本为2,超时时间为5s#功能:查询NTP服务器,返回对象r=t.request(host,port='ntp',version=4,timeout=5)ifr:breakexceptExceptionase:pass#显示时间戳t=r.tx_time#使用datetime模块,格式:x年x月x日:分:第二。millisecond_date,_time=str(datetime.datetime.fromtimestamp(t))[:22].split('')print("调整前时间为:",datetime.datetime.now())os.system('date{}&&time{}'.format(_date,_time))print("Adjustedtimeis:",datetime.datetime.now())if__name__=='__main__':#适用于Windowsntp_client()iswindows环境'cmd'下'administrator'运行,输入对应文件路径路径,运行结果如下:备注:目前还没有找到可以在pycharm中直接运行的代码,报“客户端没有所需权限”的错误。后续研究'ctypes'看能否实现2.3其他问题pycharm运行'os.system()'出现中文乱码问题,需要改编码问题。设置如下:3、参考资料:亚洲NTP服务器池:时间戳转换UTC时区,扫描二维码关注,不定时分享
