【发布时间】:2017-09-25 11:47:32
【问题描述】:
我有以下代码可以做到这一点,但我怎样才能做得更好?现在我认为它比嵌套循环更好,但是当你在列表理解中有一个生成器时,它开始变得 Perl-one-linerish。
day_count = (end_date - start_date).days + 1
for single_date in [d for d in (start_date + timedelta(n) for n in range(day_count)) if d <= end_date]:
print strftime("%Y-%m-%d", single_date.timetuple())
注意事项
- 我实际上并没有使用它来打印。这仅用于演示目的。
-
start_date和end_date变量是datetime.date对象,因为我不需要时间戳。 (它们将用于生成报告)。
样本输出
对于2009-05-30 的开始日期和2009-06-09 的结束日期:
2009-05-30
2009-05-31
2009-06-01
2009-06-02
2009-06-03
2009-06-04
2009-06-05
2009-06-06
2009-06-07
2009-06-08
2009-06-09
【问题讨论】:
-
只是要指出:我认为'time.strftime("%Y-%m-%d", single_date.timetuple())' 和较短的'single_date 之间没有任何区别.strftime("%Y-%m-%d")'。大多数答案似乎都在复制较长的样式。
-
哇,这些答案太复杂了。试试这个:stackoverflow.com/questions/7274267/…
-
@GringoSuave:Sean Cavanagh's answer 有什么复杂之处?
-
应用:在 GitHub 上作弊:stackoverflow.com/questions/20099235/…
-
@GringoSuave 该链接与以下链接重复:stackoverflow.com/questions/1060279/…
标签: python date datetime iteration date-range