python - 如何获取所有周的列表
问题描述
我试过这样的东西
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']
依此类推,如果是闰年,它也应该通过更改范围来工作,并且还需要参数化范围的长度
解决方案
我真的浏览了很多文件,找到了你的答案。检查确实花了很多时间。
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))
这个答案需要投票:)
推荐阅读
- wso2 - 当我们没有发布 websocket API 时,为什么我的 WSO2 API 管理器会不断地访问端口 9099 上的端点?
- sql - 在日期范围内划分大查询 LIMIT
- mysql - 更新数据库 CakePHP 中的单个记录
- postgresql - 分区表 - 是否不需要在分区列上添加索引?
- react-native - TouchableOpacity / Pressable 即使位置相对React Native,也不能在绝对位置的视图上工作
- sql - 如何使用 T-SQL 每 N 行选择 N 行?
- blockchain - 获取特定区块的交易(ERC-20 代币)
- html - 如何在电子邮件链接中使用带有空格的主题行
- ruby - Ruby 中的标识方法工厂
- python - 使用 Playwright for Python 刷新 cookie