如果我在一天的特定时间段内如何检查python?

lim*_*imp 5 python datetime

我想检查python,如果当前时间在两个端点之间(例如,上午8:30和下午3:00),无论实际日期如何.因为,我不在乎完整的日期是什么; 只是一小时.当我datetime使用strptime指定时间创建对象时,它会投入一个虚拟日期(我认为是1900年?),这不是我想要的.我可以使用一个笨拙的布尔表达式,(hour == 8 and minute >= 30) or (9 <= hour < 15)但似乎并不优雅.什么是最简单,最pythonic的方法来实现这一目标?

进一步扩展,我真正喜欢的东西会告诉我它是否在这个小时范围之间,而且它是一个工作日.当然我可以0 <= weekday() <= 4用来破解这个,但可能有更好的方法.

Hen*_*ter 13

datetime对象有一个调用的方法time(),它返回一个time对象(没有日期信息).然后,您可以time使用法线<>运算符比较对象.

import datetime
import time
timestamp = datetime.datetime.now().time() # Throw away the date information
time.sleep(1)
print (datetime.datetime.now().time() > timestamp) # >>> True (unless you ran this one second before midnight!)

# Or check if a time is between two other times
start = datetime.time(8, 30)
end = datetime.time(15)
print (start <= timestamp <= end) # >>> depends on what time it is
Run Code Online (Sandbox Code Playgroud)

如果您还想检查工作日,您建议的代码可能是最有效的方法,但在这种情况下,您可能不想丢弃原始datetime对象.

now = datetime.datetime.now()
if 0 <= now.weekday() <= 4:
    print ("It's a weekday!")
print (start <= now.time() <= end) # with start & end defined as above
Run Code Online (Sandbox Code Playgroud)