我想使用Python3.x中的理解来打印2013年至2018年的所有日期
以下代码适用于2013年至2018年的打印日期,但仅适用于以下月份[1,3,5,7,8,10,12]:
print([datetime.date(i,j,k).strftime('%d %b %Y') for i in range(2013,2019)
for j in range(1,13)
if j in {1,3,5,7,8,10,12}
for k in range(1,32)])
但是剩下的几个月还需要在elif中使用循环,并且以下代码显示语法错误:
print([datetime.date(i,j,k).strftime('%d %b %Y') for i in range(2013,2019)
for j in range(1,13)
if j in {1,3,5,7,8,10,12}
for k in range(1,32)
elif j in {4,6,9,11}
for k in range(1,31)
else
for k in range(1,29)])
如果可能的话,如果有人能够以同样的理解为闰年添加代码,我会很高兴。
答案 0 :(得分:1)
如果确实想要列表理解,那么就去吧!
让我们使用另一种方法。
datetime.date(2013, 1, 1).toordinal() == 734869
datetime.date(2019, 1, 1).toordinal() == 737060
此处右侧的数字是从1月1日开始的天的数量。现在您可以计算从734869开始的天数并获取新日期:
dates = [
datetime.date.fromordinal(ordinal)
for ordinal in range(
datetime.date(2013, 1, 1).toordinal(),
datetime.date(2019, 1, 1).toordinal()
)
]