繁体   English   中英

检查某个范围内的任何日期是否在另一个范围内

[英]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_dateend_date是否在一周中,因为我end_dateLong 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM