如何根据给定任意周内日期获取对应周周一到周日的日期范围
通用实现方案
我们可以借助Python标准库datetime实现该需求,核心逻辑是通过输入日期的周偏移量计算当周周一、周日的日期:
- 首先将输入的字符串格式日期转换为
datetime对象 - 调用
weekday()方法获取当前日期对应的周偏移值(周一为0,周日为6) - 用当前日期减去偏移天数得到当周周一的日期,再加6天得到当周周日的日期
- 最后将两个日期转换回
%Y-%m-%d格式的字符串返回
from datetime import datetime, timedelta def returnDateRange(date_str): # 将输入字符串转换为datetime对象 input_date = datetime.strptime(date_str, "%Y-%m-%d") # 计算当周周一日期 monday = input_date - timedelta(days=input_date.weekday()) # 计算当周周日日期 sunday = monday + timedelta(days=6) # 转换为要求格式返回 return [monday.strftime("%Y-%m-%d"), sunday.strftime("%Y-%m-%d")]
功能测试
# 测试输入为周一 print(returnDateRange("2021-11-22")) # 输出:['2021-11-22', '2021-11-28'] # 测试输入为同周周四 print(returnDateRange("2021-11-25")) # 输出:['2021-11-22', '2021-11-28'] # 测试输入为同周周日 print(returnDateRange("2021-11-28")) # 输出:['2021-11-22', '2021-11-28']
该实现会自动处理跨月、跨年的日期计算场景,无需额外做边界适配。
内容的提问来源于stack exchange,提问作者Chandresh Chahar
相关产品推荐
相关产品推荐

