Skip to main content
 首页 » 编程设计

Python:遍历一个月中的所有日子

2025年05月04日19mfryf

是否有一种简单的方法可以遍历给定月份的所有日期?

我想要一个方法,其中我正在迭代的对象将日期作为 datetime.date 对象。我已经找到了 calendar 模块及其 Calendar 类和相应的方法 itermonthdates(year, month)。

我的问题是生成的迭代器包含“填充”天数来表示完整的周数。例如,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) 

它的行为符合预期,但我不确定是否有更好、更优雅的方法。

请您参考如下方法:

只需按月过滤 date 对象。

for d in [x for x in c.itermonthdates(2019, 7) if x.month == 7]: