使用python获取两个日期之间的周数

Lud*_*udo 4 python datetime timedelta rrule

我想找到最 Pythonic 的方式来输出两个日期之间的周数列表。

例如:

输入

start = datetime.date(2011, 12, 25) 
end = datetime.date(2012, 1, 21)
Run Code Online (Sandbox Code Playgroud)

输出

find_weeks(start, end)
>> [201152, 201201, 201202, 201203]
Run Code Online (Sandbox Code Playgroud)

我一直在努力使用 datetime 库,但收效甚微

Ant*_*vBR 5

更新:删除了不太可读的选项)

import datetime

def find_weeks(start,end):
    l = []
    for i in range((end-start).days + 1):
        d = (start+datetime.timedelta(days=i)).isocalendar()[:2] # e.g. (2011, 52)
        yearweek = '{}{:02}'.format(*d) # e.g. "201152"
        l.append(yearweek)
    return sorted(set(l))

start = datetime.date(2011, 12, 25) 
end = datetime.date(2012, 1, 21)

print(find_weeks(start,end)[1:]) # [1:] to exclude first week.
Run Code Online (Sandbox Code Playgroud)

退货

['201152', '201201', '201202', '201203']
Run Code Online (Sandbox Code Playgroud)

要包括第一周(201151),只需[1:]在函数调用后删除