检查一个范围内的任何日期是否在另一个范围之间
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 天的那一周。以我目前的观点,只有 All Day Event 和 Conference 属于该周.我需要证明所有这些事件都属于一周。
Obs.: 我不能只检查 start_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)
周 window 定义为:week_start、week_end
任务定义为:task_start、task_end
任务与周重叠,如果:
task_start < week_end and task_end >= week_start
我有以下情况:
这是我的 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
,我想检查这个范围内的任何值是否在当前周。
查看示例:
Obs.: 我不能只检查 start_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)
周 window 定义为:week_start、week_end
任务定义为:task_start、task_end
任务与周重叠,如果:
task_start < week_end and task_end >= week_start