首页 > 解决方案 > 需要从 NTP 服务器检查当前时间是否在 python 的某个时间范围内

问题描述

我需要检查来自 NTP 服务器(使用ntplib模块)的当前时间是否在某个要求的时间范围内。

我已经编写了下面的代码,但我需要一些帮助来完成这项任务。

#!/usr/bin/python

import ntplib

from time import ctime

ntp_client = ntplib.NTPClient()
response = ntp_client.request('pool.ntp.org')

print (ctime(response.tx_time))

输出:

Fri Aug 16 13:26:16 2019

现在我需要检查 ntp 当前时间“13:26:16”是否在“09:30:00 - 15:30:00”时间范围内,那么我们如何在 Python 中检查呢?

必须说当前 ntp 时间在/不在时间范围“09:30:00 - 15:30:00”内

标签: pythontimentp

解决方案


将纪元时间戳转换为合适的表示形式,例如 Pythondatetime对象并检查小时和分钟字段。

from time import gmtime
# ...
dt = time.gmtime(response.tx_time)
if (dt.tm_hour == 9 and dt.tm_min >= 30) or (
    10 <= dt.tm_hour <= 14) or (
        dt.tm_hour == 15 and dt.tm_min <= 30):
    print('yes indeed')
else:
    print('not')

时区总是很棘手;以上为您提供 UTC(名称含糊地暗示gmtime)。如果您想与当地时区的值进行比较,请尝试time.localtime


推荐阅读