如何用Python正确获取指定日期对应上一周的周一和周日
Python 获取上一周周一、周日的代码修正
问题根因
原代码的计算逻辑实际返回的是当前日期所在周的周一和周日,因此2021年11月28日(周日)运行时得到的是当周的2021-11-22至2021-11-28,仅当当前日期为新一周的周一时,减7天的运算结果刚好匹配上一周的日期,不符合通用场景要求。
修正方案
推荐使用拆分步骤的计算逻辑,避免复杂模运算带来的逻辑错误,可读性和兼容性更强:
import datetime today = datetime.date.today() # 计算当前周的周一(weekday方法周一返回0,周日返回6) current_week_monday = today - datetime.timedelta(days=today.weekday()) # 上周一为当前周一往前推7天 self.monday = (current_week_monday - datetime.timedelta(days=7)).strftime('%Y-%m-%d') # 上周日为当前周一往前推1天 self.sunday = (current_week_monday - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
测试验证
传入测试日期2021-11-28时,输出结果如下:
Monday: 2021-11-15 Sunday: 2021-11-21
完全符合预期。
内容的提问来源于stack exchange,提问作者Tenserflu
相关产品推荐
相关产品推荐

