如何在Python中获取上一周?

28

我目前正在获取从星期一开始到星期日结束的本周,但是如何获取从上周星期一开始到星期日结束的时间段呢?这是我现在用于获取本周的代码:

>>> import datetime
>>> today = datetime.date.today()
>>> weekday = today.weekday()
>>> start_delta = datetime.timedelta(days=weekday)
>>> start_of_week = today - start_delta
>>> week_dates = []
>>> for day in range(7):
...     week_dates.append(start_of_week + datetime.timedelta(days=day))
...
>>> week_dates
[datetime.date(2013, 10, 28), datetime.date(2013, 10, 29), datetime.date(2013, 10, 30),     datetime.date(2013, 10, 31), datetime.date(2013, 11, 1), datetime.date(2013, 11, 2), datetime.date(2013, 11, 3)]
>>> week_dates[0], week_dates[-1]
(datetime.date(2013, 10, 28), datetime.date(2013, 11, 3)) <--- Monday, Sunday

做同样的事情,但往回再七天? - Jon Clements
1
Python 的魔法有时候很奇怪。我之前从未知道,print(datetime.datetime.now() - datetime.timedelta(days=9)) 会输出 2022-03-14 17:43:54.239033 - MarkHu
1个回答

47

只需将weeks=1添加到您的start_delta中,即可再减去一周:

>>> start_delta = datetime.timedelta(days=weekday, weeks=1)

因此,对于今天(2013年10月30日)start_delta将为9天(回到上周一,2013年10月21日)。

>>> start_delta
datetime.timedelta(9)
>>> start_of_week = today - start_delta
>>> start_of_week
datetime.date(2013, 10, 21)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接