Python中按周数获取以周日为一周首日的日期范围
Python 根据周数获取以周日为起始的日期范围
代码实现
import datetime def get_week_date_range(week_input): # 解析输入的周数信息 if isinstance(week_input, str): year, week = map(int, week_input.split('-')) else: # 未指定年份时默认使用当前年份 year = datetime.datetime.now().year week = week_input # 定位到目标周的周日(一周的第一天) # %U:以周日为一周起始的周数(范围00-53),%w=0表示周日 sunday = datetime.datetime.strptime(f"{year}-{week}-0", "%Y-%U-%w") # 生成从周日到周六的7天日期列表 date_range = [ (sunday + datetime.timedelta(days=i)).strftime("%Y-%m-%d") for i in range(7) ] return date_range
使用示例
# 输入年-周格式 print(get_week_date_range("2022-34")) # 输出: ["2022-08-21","2022-08-22", "2022-08-23","2022-08-24","2022-08-25","2022-08-26","2022-08-27"] # 输入单独周数(默认当前年份) print(get_week_date_range(34)) # 若当前年份为2022,输出与上述一致
关键说明
- 周数定义兼容:使用
%U格式处理周数,严格遵循「周日为一周第一天」的要求,与输入示例的周数规则匹配。 - 自动兼容闰年/月份差异:
datetime模块会自动处理闰年的2月29天、不同月份的天数差异等问题,无需额外逻辑判断。 - 输入灵活性:支持两种输入格式:
- 字符串格式:
"YYYY-WW"(如"2022-34") - 数字格式:单独的周数(默认使用当前年份)
- 字符串格式:
- 边界周处理:自动处理每年的第一周、最后一周的日期跨年度情况(例如2023年第0周的周日为2022年12月25日)。
内容的提问来源于stack exchange,提问作者Adataguy
相关产品推荐
相关产品推荐

