检查给定的年周是否在年周范围内

时间:2020-07-07 09:45:22

标签: python python-3.x datetime

如果给定了年周范围,例如, start_year,start_week =(2019,45) 和 end_year,end_week =(2020,15)

在python中,我如何检查Year-Week是否在上述范围之内? 例如,对于Year = 2020和Week = 5,我应该得到一个“ True”。

3 个答案:

答案 0 :(得分:1)

假设所有“年-周”对的格式都正确(因此没有(2019-74)这样的东西,您可以通过以下方法进行检查:

start_year_week = (2019, 45)
end_year_week = (2020, 15)
under_test_year_week = (2020, 5)

in_range = start_year_week <= under_test_year_week < end_year_week  # True

Python通过首先比较第一个元素来进行元组比较,如果相等,则比较第二个,依此类推。这就是您想要的,甚至不将其视为实际日期/星期:D(根据是否要包含<<=使用(2019, 45)(2020, 15)还是没有。)

答案 1 :(得分:0)

您可以将年和周解析为datetime对象。如果您对测试年/周进行相同的操作,则可以使用比较运算符来查看它是否在该范围内。

from datetime import datetime

start_year, start_week = (2019, 45) 
end_year, end_week = (2020, 15)

# start date, beginning of week
date0 = datetime.strptime(f"{start_year} {start_week} 0", "%Y %W %w")
# end date, end of week
date1 = datetime.strptime(f"{end_year} {end_week} 6", "%Y %W %w")

testyear, testweek = (2020, 5)
testdate = datetime.strptime(f"{testyear} {testweek} 0", "%Y %W %w")

date0 <= testdate < date1
# True

答案 2 :(得分:-1)

start = (2019, 45)
end = (2020, 15)


def isin(q):
    if end[0] > q[0] > start[0]:
        return True
    elif end[0] == q[0]:
        if end[1] >= q[1]:
            return True
        else:
            return False
    elif q[0] == start[0]:
        if q[1] >= start[1]:
            return True
        else:
            return False
    else:
        return False

尝试一下: print(isin((2020,5)))>>>>>是

相关问题