python - 构建上周、本周和下周的日期数组

标签 python date datetime python-datetime

我经常被 Python 中关于日期的事情绊倒。在我的 web 应用程序中,我想显示一个日历三周的每一天:上周、当前周和下周,星期一表示一周的开始。

我目前处理这个问题的方法是退回日期,直到我到达星期一,然后再减去 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)]

关于python - 构建上周、本周和下周的日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611774/

相关文章:

java - 社交网络架构、C++ Clients Neo4j 数据库之间有什么关系?

python - 在使用 OOP 尝试钻石形状问题时,Python 中发生了什么

java - 从字符串中获取时间戳而不是日期

java - 从 yyyy-MM-dd 字符串中获取月份

C#,NUnit : Is it possible to test that a DateTime is very close, 但不一定等于另一个?

python - Keras 卷积秩与 1 个过滤器不一致

python - PYODBC 不喜欢 %, "The SQL contains 2 parameter markers, but 1 parameters were supplied."

java - SimpleDateFormat 不工作

Java 日期时间转换

c# - 将日期时间重新格式化为 2014 年 11 月 7 日