我想在 python 中检查当前时间是否在两个端点之间(例如上午 8:30 和下午 3:00),无论实际日期如何。就像这样,我不在乎完整的日期是什么;只是那个小时。当我创建时datetime
对象使用strptime
为了指定时间,它输入了一个虚拟日期(我认为是 1900 年?),这不是我想要的。我可以使用一个笨拙的布尔表达式,例如(hour == 8 and minute >= 30) or (9 <= hour < 15)
但这看起来不太优雅。完成这个任务最简单、最Pythonic的方法是什么?
再进一步延伸,我真正想要的是能够告诉我时间是否在该时间范围之间以及是否是工作日。当然我可以直接使用0 <= weekday() <= 4
破解这个,但可能有更好的方法。
datetime
对象有一个方法叫做time()
它返回一个time
对象(没有日期信息)。然后您可以比较time
使用法线的对象<
or >
运营商。
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
如果您还想检查工作日,您建议的代码可能是最有效的方法,但在这种情况下,您可能不想扔掉原来的代码datetime
object.
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)