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 库,但收效甚微
(更新:删除了不太可读的选项)
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:]在函数调用后删除
| 归档时间: |
|
| 查看次数: |
3583 次 |
| 最近记录: |