gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:58:33 24 4
gpt4 key购买 nike

我经常被 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com