You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中基于当前日期获取上一个周日的日期

获取上一个周日的Python实现

嘿,这里有两种简洁的Python实现方案,帮你从当前日期获取上一个周日的日期,完全匹配你给出的示例场景(当前日期09/11/2021,对应上一个周日31/10/2021)👇

方法一:用weekday()计算(基于周一为起始的星期规则)

datetime.date.weekday()会返回0(周一)到6(周日)的数值。我们可以根据当前日期的星期数,计算需要往前推的天数:

import datetime

today = datetime.date.today()
# 计算距离上一个周日的天数:非周日时,推 (当前星期数+1) 天;周日时推7天
days_to_subtract = (today.weekday() + 1) % 7
if days_to_subtract == 0:
    days_to_subtract = 7
last_sunday = today - datetime.timedelta(days=days_to_subtract)

print(last_sunday)

方法二:用isoweekday()计算(更贴近日常认知)

datetime.date.isoweekday()返回1(周一)到7(周日)的数值,这个逻辑更符合我们对星期的常规理解,代码可读性更高:

import datetime

today = datetime.date.today()
# 非周日时,推当前星期数天;周日时推7天(避免返回当天)
days_to_subtract = today.isoweekday() if today.isoweekday() != 7 else 7
last_sunday = today - datetime.timedelta(days=days_to_subtract)

print(last_sunday)

验证你的示例场景

如果手动指定today为你给出的日期:

today = datetime.date(2021, 11, 9)

运行任意一段代码,都会输出2021-10-31,和预期结果完全一致。

补充说明

  • 两种方法都能正确处理今天就是周日的情况:比如如果今天是2021年11月7日(周日),代码会返回上一个周日(2021年10月31日),而不是当天。
  • 如果你需要在今天是周日时返回当天,可以简化days_to_subtract的逻辑为(today.weekday() + 1) % 7(不需要额外判断),这样周日时会减0天,直接返回当前日期。

内容的提问来源于stack exchange,提问作者VEERA BABU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 00:27:36