如何检查给定的日期时间对象是否在两个日期时间之间?

15 投票
5 回答
39615 浏览
提问于 2025-04-15 21:34
my_event = Event.objects.get(id=4)
current_time = datetime.datetime.now()

我该怎么检查当前时间是否在这两个时间之间呢?

my_event.start_time < current_time < my_event.end_time

5 个回答

3

我知道这个问题已经很久了,但因为它在谷歌搜索结果中排名很高,所以这里的回答没有考虑到两种情况:

  1. 如果你的时间正好等于你设定的范围,比如你的范围是6到8,而时间是6。
  2. 如果你的时间范围是从18:00到6:00,这个范围是有效的;但是19:00就不在这个范围内。

我写了一个函数来处理时间比较,希望这能帮助到查看这个旧问题的朋友们。

def process_time(intime, start, end):
    if start <= intime <= end:
        return True
    elif start > end:
        end_day = time(hour=23, minute=59, second=59, microsecond=999999)
        if start <= intime <= end_day:
            return True
        elif intime <= end:
            return True
    return False
12

你可以用一个简单的if语句来比较三个日期,像这样:

if date1 < yourdate < date2:
  ...do something...
else:
  ...do ...
11

只要 start_time 和 end_time 没有关联的时区信息,你的做法就是正确的。你不能直接把一个没有时区的时间和一个有时区的时间进行比较。

撰写回答