python – 在上周,本周和下周构建日期数组

我经常在
Python中关注日期.在我的网络应用程序中,我希望每天显示三个星期的日历:上周,当前周和下一周,星期一表示一周的开始.

我目前接近这个的方式是逐步回顾日期,直到我击中星期一,然后再减去7天然后加20来建立三周的范围……但这感觉真的很笨重.

Python有几个星期的概念,还是我必须手动躲避它几天?

编辑:现在我把它编码出来,它并不太可怕,但我确实想知道是否有一些稍微好一点的东西,再次用几周而不是几天的概念.

today = datetime.date.today()
last_monday = today - datetime.timedelta(days=today.weekday()) - datetime.timedelta(days=7)
dates = [last_monday + datetime.timedelta(days=i) for i in range(0, 21)]

最佳答案 不,这就是它.但基于
datetime.date.weekday()结果的列表理解应该很容易:

today = datetime.date(2013, 06, 26)
dates = [today + datetime.timedelta(days=i) for i in range(-7 - today.weekday(), 14 - today.weekday())]

请记住,范围不必从0开始.:-)

演示:

>>> import datetime
>>> from pprint import pprint
>>> today = datetime.date(2013, 07, 12)
>>> pprint([today + datetime.timedelta(days=i) for i in range(-7 - today.weekday(), 14 - today.weekday())])
[datetime.date(2013, 7, 1),
 datetime.date(2013, 7, 2),
 datetime.date(2013, 7, 3),
 datetime.date(2013, 7, 4),
 datetime.date(2013, 7, 5),
 datetime.date(2013, 7, 6),
 datetime.date(2013, 7, 7),
 datetime.date(2013, 7, 8),
 datetime.date(2013, 7, 9),
 datetime.date(2013, 7, 10),
 datetime.date(2013, 7, 11),
 datetime.date(2013, 7, 12),
 datetime.date(2013, 7, 13),
 datetime.date(2013, 7, 14),
 datetime.date(2013, 7, 15),
 datetime.date(2013, 7, 16),
 datetime.date(2013, 7, 17),
 datetime.date(2013, 7, 18),
 datetime.date(2013, 7, 19),
 datetime.date(2013, 7, 20),
 datetime.date(2013, 7, 21)]
点赞