用Python查找星期一的日期
我想知道怎么用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())