为什么从12月开始?并且1 1
最后重复。什么是更多的Pythonic方法来迭代一年中的所有日子(处理闰年)?
import calendar
a = calendar.Calendar(0)
for b in range(1,13):
for x in a.itermonthdates(2016,b):
print x.month, x.day
输出:
12 28
12 29
12 30
12 31
1 1
1 2
1 3
..
..
..
完整输出:
答案 0 :(得分:3)
itermonthdates
返回完整的周数:
itermonthdates(年,月) 返回年份中月月(1-12)的迭代器。此迭代器将返回月份的所有日期(作为datetime.date对象)以及月份开始之前或月末之后所需的一整天。
您可以拒绝年份不是2016年的日期:
import calendar
a = calendar.Calendar(0)
g = (x for b in xrange(1, 13) for x in a.itermonthdates(2016, b) if x.year == 2016)
print next(g)
输出:
2016-01-01
答案 1 :(得分:0)
itermonthdates
返回所有周,包括月中的几天。因此,应该检查所有月份。
import calendar
a = calendar.Calendar(0)
for b in range(1,13):
for x in a.itermonthdates(2017,b):
if x.month==b:
print x #x.month, x.day