首页 > 解决方案 > 如何获取所有周的列表

问题描述

我试过这样的东西

year, week_num, day_num = date.today().isocalendar()
weeks = []
week_range_start = 1
week_range_end = 17
for i in range(week_range_start,week_range_end):
  curr_week = week_num - i
  str_week = str(curr_week) if len(str(curr_week)) == 2 else f'0{curr_week}'
  weeks.append(str(year) + str_week)
print(weeks)

我的输出看起来像这样

['202114', '202113', '202112', '202111', '202110', '202109', '202108', '202107', '202106', '202105', '202104', '202103', '202102', '202101', '202100', '2021-1']

这是错误的,因为没有 00 周数。周数从 1 到 52 开始,我也得到相同的 2021 而不是 2020。输出应该是

['202114', '202113', '202112', '202111', '202110', '202109', '202108', '202107', '202106', '202105', '202104', '202103', '202102', '202101', '202053', '202052']

依此类推,如果是闰年,它也应该通过更改范围来工作,并且还需要参数化范围的长度

标签: python

解决方案


我真的浏览了很多文件,找到了你的答案。检查确实花了很多时间。

from datetime import date, timedelta


def getweeks(limit):
    finalres = []
    for i in range(limit):
        dt = date.today() - timedelta(weeks=i)
        year,month,d = dt.year,dt.month,dt.day
        week = str(date(year, month, d).isocalendar()[1])
        res = str(year) + week
        finalres.append(res)
    return finalres

num = int(input("Enter how many weeks you want ? : "))
print(getweeks(num))

这个答案需要投票:)


推荐阅读