【发布时间】:2019-02-03 15:16:38
【问题描述】:
我需要从 2007-01-01 00:00 到 2016-01-01 00:00 每分钟创建一个日期时间元素列表,但不包括 2 月 29 日。我的代码是下一个:
dates = []
date0 = datetime(2007, 1, 1, 0, 0)
delta = td(minutes=1)
while date0 < datetime(2016, 1, 1, 0, 0):
if date0.date != date(2008, 2, 29) and date0.date != date(2012, 2, 29):
dates.append(date0)
date0 = date0 + delta
我应该有一个 9 年没有 29.02 的列表。但我的日期列表仍然包含 2008 年 2 月 29 日和 2012 年。我试图应用此代码:
while date0 < datetime(2016, 1, 1, 0, 0):
if date0.month != 2 and date0.day != 29:
dates.append(date0)
date0 = date0 + delta
但结果我有一个列表,其中不包含适当的天数,只有 8 年零 14 天。 您对解决问题有任何解决方案或想法吗?
【问题讨论】:
-
datatimes 的数量可能很大(每年 525K),而您生成它们的总体方法非常效率低下。你为什么要这样做?我怀疑可能是XY-Problem。 -
同意@martineau - 但如果你确实需要一个日期范围,那么你可以查看
pandas- 请参阅下面的答案。
标签: python list python-datetime