我在数据库中有很多时间范围,并构建一个表单以在其中插入新的时间范围。
我也写了一个函数来检查新时间范围与其他时间范围之间的重叠
例如,当第一个范围是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
答案 0 :(得分:1)
if (earliest_end - latest_start).days >= 0:
return True
break
此声明是返回True的内容。你应该把它拿出来。