Python 如果给定一天,如何获取当前周的所有datetime实例?

Python 如果给定一天,如何获取当前周的所有datetime实例?,python,date,datetime,python-datetime,Python,Date,Datetime,Python Datetime,给定一天,我希望获得一周中存在该天的所有天(datetime实例) 我有一个解决方案,请纠正我,如果有什么问题,如果更有效的方法存在 >>> import datetime >>> today = datetime.datetime(2013, 06, 26) >>> today datetime.datetime(2013, 6, 26, 0, 0) >>> day_of_week = today.isocalendar(

给定一天,我希望获得一周中存在该天的所有天(datetime实例)

我有一个解决方案,请纠正我,如果有什么问题,如果更有效的方法存在

>>> import datetime
>>> today = datetime.datetime(2013, 06, 26)
>>> today
datetime.datetime(2013, 6, 26, 0, 0)
>>> day_of_week = today.isocalendar()[2] - 1
>>> day_of_week
2
>>> start_date = today - timedelta(days=day_of_week)
>>> start_date
datetime.datetime(2013, 6, 24, 0, 0) # Got monday
>>> dates = [start + timedelta(days=i) for i in range(7)]
>>> dates
[datetime.datetime(2013, 6, 24, 0, 0),
 datetime.datetime(2013, 6, 25, 0, 0),
 datetime.datetime(2013, 6, 26, 0, 0),
 datetime.datetime(2013, 6, 27, 0, 0),
 datetime.datetime(2013, 6, 28, 0, 0),
 datetime.datetime(2013, 6, 29, 0, 0),
 datetime.datetime(2013, 6, 30, 0, 0)]

我希望周一是开始日期,周日是结束日期。

我会使用
datetime.date()
来明确我们在这里计算日期,并使用来获取当前工作日,而不是使用
.isocalendar()
调用,给我们一个基于0的工作日号码(0是星期一)

演示:

在Python2上,如果愿意,可以用
xrange()
替换
range()
;对于7天的价值,这不会有太大的区别


只是为了明确;也存在,而且还有一个
.isoweekday()
,因此无需在任何地方使用
.isocalendar()

@MartjinPieters:谢谢你的提示。我在看这个问题:。这看起来很复杂。我认为我的方法很简单,但对此持怀疑态度。再次感谢。这里的答案也使用了
.weekday()
.isocalendar()
调用仅用于获取周数。
import datetime

today = datetime.date(2013, 06, 26)
dates = [today + datetime.timedelta(days=i) for i in range(0 - today.weekday(), 7 - today.weekday())]
>>> from pprint import pprint
>>> import datetime
>>> today = datetime.date(2013, 06, 26)
>>> pprint([today + datetime.timedelta(days=i) for i in range(0 - today.weekday(), 7 - today.weekday())])
[datetime.date(2013, 6, 24),
 datetime.date(2013, 6, 25),
 datetime.date(2013, 6, 26),
 datetime.date(2013, 6, 27),
 datetime.date(2013, 6, 28),
 datetime.date(2013, 6, 29),
 datetime.date(2013, 6, 30)]