在python中如何找到给定时间是否在一个范围之间

时间:2016-07-11 14:52:50

标签: python

我需要每天在设定的时间之间执行代码。所以我需要找出当前时间是否在一个时间范围之间。

hralarm=False
now = datetime.datetime.now().time()

if  datetime.time(hour=14,minute=40) > now  > datetime.time(hour=14,minute=50):
   hralarm=True
else :
   hralarm=False

hralarm标志始终返回False。 now变量返回14:46:22.994000。我应该将'now'格式化为没有秒和微秒,也许这就是为什么比较没有正确发生的原因?..我是python的新手,所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:3)

您将比较运算符混淆了。你问的是当前时间是之前 14:40:

datetime.time(hour=14,minute=40) > now   # only times *smaller* will match

之后 14:50:

now > datetime.time(hour=14,minute=50)  # only times *greater* will match

没有时钟时间可以同时匹配这两个条件。

以下测试可用于查找14:40到14:50之间的时间:

if datetime.time(14, 40) < now < datetime.time(14, 50):
# 14:40 must be smaller          and 14:50 must be greater

请注意<>的“尖头”指向较小的值。

请注意,比较运算符已生成TrueFalse,您可以将直接分配给hralarm变量,而不是使用if为你确认:

now = datetime.datetime.now().time()
hralarm = datetime.time(14, 40) < now < datetime.time(14, 50)

答案 1 :(得分:-1)

hralarm=False
now = datetime.datetime.now().time()

if  datetime.time(hour=14,minute=40) < now  < datetime.time(hour=14,minute=50):
   hralarm=True
else :
  hralarm=False

答案 2 :(得分:-1)

import time
import datetime

hralarm=False
now = datetime.datetime.now().time()

time1 = datetime.time(14, 40, 0)
time2 = datetime.time(14, 50, 0)

if  (time1.hour >= now.hour and time1.minute < now.minute) and  (now.hour  <= time2.hour and now.minute  < time2.minute):
   hralarm=True
else :
   hralarm=False

print(hralarm)