用Python查找星期一的日期

95 投票
8 回答
75750 浏览
提问于 2025-04-15 15:22

我想知道怎么用Python找到上一个星期一的日期,前提是我已经有了今天的日期。我想过用 datetime.weekday() 这个方法,但我遇到了一些困难。

我主要是想找到今天的日期和上个星期一的日期,这样我就可以在Django中构建一个日期范围查询,使用的格式是 created__range=(start_date, end_date)

8 个回答

26

我觉得最简单的方法是使用 python-dateutil,可以这样做:

from datetime import date
from dateutil.relativedelta import relativedelta, MO

today = date.today()
last_monday = today + relativedelta(weekday=MO(-1))
print last_monday
60

ChristopheD的帖子跟你想要的差不多。不过我没有足够的积分来评论 :(

如果你用的是(这个其实会给你下一个即将到来的星期一):

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

我会这样说:

>>> last_monday = today - datetime.timedelta(days=today.weekday())

如果你想要上一个星期,可以加上'weeks=1'这个参数。

这样写代码会更容易理解,因为你是在减去一个时间段。这可以避免因为加上一个有正有负的时间段而造成的混淆。

210
>>> import datetime
>>> today = datetime.date.today()
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

一些解释的话:

先拿今天的日期。然后减去这一周已经过去的天数(这样你就能得到“上一个”星期一的日期)。接着再加上一周的时间。

编辑:上面的内容是为了计算“下一个星期一”,但因为你想要的是“上一个星期一”,你可以使用

today - datetime.timedelta(days=today.weekday())

撰写回答