python-确定时间范围重叠?

时间:2017-09-15 19:01:43

标签: python

我在数据库中有很多时间范围,并构建一个表单以在其中插入新的时间范围。

我也写了一个函数来检查新时间范围与其他时间范围之间的重叠

例如,当第一个范围是14:00到15:00,第二个范围是16:00到17:00时,此功能运行良好,不会返回True。

如果第二个范围是15:00到16:00,尽管两个范围没有任何重叠但返回True!

def is_overlap(start_date, end_date, obj):
"""
Check overlaping between start_date and end_date
start_date = Start Meeting DateTime
end_date = End Meeting DateTime
obj = Model query objects
"""

for q in obj:
    latest_start = max(start_date, q.start_date)
    earliest_end = min(end_date, q.end_date)

    if (earliest_end - latest_start).days == 0:
        if not (earliest_end - latest_start).seconds == 0:
            return True
            break

    if (earliest_end - latest_start).days >= 0:
        return True
        break

1 个答案:

答案 0 :(得分:1)

    if (earliest_end - latest_start).days >= 0:
        return True
        break

此声明是返回True的内容。你应该把它拿出来。