有没有一种简单的方法来迭代给定月份中的所有日期?
我想要一个方法,通过它我可以迭代具有日期作为datetime.date
对象的对象。我已经找到了calendar
模块及其Calendar
类和相应方法itermonthdates(year, month)
。
我的问题是,由于需要完整的周,itermonthdates()
方法返回包含“填充”日期的迭代器。例如,2019年7月以星期三(31号)结束。因此,这一周是不完整的,itermonthdates()
添加了8月1日至4日的日期。
我不想要这种行为。
我的第一个猜测是类似于:
from calendar import Calendar, monthrange
c = Calendar()
for date in list(c.itermonthdates(2019, 7))[:monthrange(2019, 7)[1]]:
print(date)
这个表现的符合预期,但我不确定是否有更好、更优雅的做法。
calendar
是 Python 的一个标准模块。 - John Gordoncalendar
是一个标准库中的模块名称。我把DateTime
修改为datetime.date
,对此表示抱歉。 - Chgadfor d in itertools.takewhile(lambda x: x.month == 7, c.itermonthdates(2019, 7)):
替换monthrange
调用,使代码更加整洁。我不确定是否有更好的方法可以使用标准库实现。 - Peter DeGlopper