ntplib python 库将 NTP 时间戳与 Unix 时间转换为自 1970 年 1 月 1 日以来的秒数。
import ntplib
from datetime import datetime, timezone
dt = datetime.now(timezone.utc)
ts = dt.timestamp()
print("datetime:", dt)
print("timestamp:", ts)
# convert native timestamp to NTP time
ntptime = ntplib.system_to_ntp_time(ts)
print("NTP time: ", ntptime)
# convert NTP time to native timestamp
ts = ntplib.ntp_to_system_time(ntptime)
print("timestamp:", ts)
输出:
datetime: 2022-02-01 18:22:56.530085+00:00
timestamp: 1643739776.530085
NTP time: 3852728576.530085
该库还实现了一个 NTP 客户端来查询 NTP 服务器并从请求及其响应中返回相关的时间。
import ntplib
from datetime import datetime
client = ntplib.NTPClient()
server = 'pool.ntp.org'
resp = client.request(server, version=3)
print("offset", resp.offset)
print("delay", resp.delay)
# timestamps are converted to native "UNIX" timestamps
print(resp.orig_time)
print("orig_time:", datetime.utcfromtimestamp(resp.orig_time))
print("recv_time:", datetime.utcfromtimestamp(resp.recv_time))
print("tx_time :", datetime.utcfromtimestamp(resp.tx_time))
print("dest_time:", datetime.utcfromtimestamp(resp.dest_time))
输出:
offset 0.007886648178100586
delay 0.002925395965576172
1643738937.685132
orig_time: 2022-02-01 18:08:57.685132
recv_time: 2022-02-01 18:08:57.693858
tx_time : 2022-02-01 18:08:57.693956
dest_time: 2022-02-01 18:08:57.688134