![](/img/trans.png)
[英]Check if row's date range overlap any previous rows date range in Python / Pandas Dataframe
[英]Check if any date in a range is between another range
我有以下情况:
这是我的views.py
:
def home(request):
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday() + 1)
end_week = start_week + datetime.timedelta(6)
week_tasks = Task.object.filter(owner=request.user, start_date__range=[start_week, end_week])
context = {}
context['week_tasks'] = week_tasks
return render(request, 'home.html', context)
此视图检查start_date
(DateField)是否在当前星期的范围内。 但是我在数据库上还有另一个字段end_date
,我想检查当前星期是否有该范围的任何值。
检查示例: 让我们假设当前星期是一天中的星期17。根据我当前的观点,只有全天活动和会议属于星期。 我需要证明所有这些事件都属于一周。
观察:我不能仅检查start_date
和end_date
是否在一周中,因为我end_date
了Long Event的情况,该事件在一周之前开始,之后在之后结束。
views.py
:
def home(request):
date = datetime.date.today()
if date.isoweekday() == 7:
date = date + datetime.timedelta(1)
start_week = date - datetime.timedelta(date.isoweekday())
end_week = start_week + datetime.timedelta(6)
week_tasks = Task.object.filter(owner=request.user).exclude(end_date__lt=start_week).exclude(start_date__gt=end_week)
context = {}
context['week_tasks'] = week_tasks
return render(request, 'home.html', context)
周窗口定义为:week_start,week_end
任务定义为:task_start,task_end
如果满足以下条件,则任务与周重叠:
task_start < week_end and task_end >= week_start
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.