我想生成一个介于两个日期之间的日期列表,并将它们以字符串格式存储在列表中。此列表有助于与我拥有的其他日期进行比较。
我的代码如下:
from datetime import date, timedelta
sdate = date(2019,3,22) # start date
edate = date(2019,4,9) # end date
def dates_bwn_twodates(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date + timedelta(n)
print(dates_bwn_twodates(sdate,edate))
我目前的产出:
<generator object dates_bwn_twodates at 0x000002A8E7929410>
我的预期输出:
['2019-03-22',.....,'2019-04-08']
我的代码有问题。
9条答案
按热度按时间7vux5j2d1#
您可以使用
pandas.date_range()
来执行以下操作:cgyqldqp2#
你的代码重写为列表解析:
结果:
vd8tlhqk3#
我很惊讶这不是datetime包中的标准函数。
下面是一个执行所请求操作的函数:
用法:
输出:
更新
虽然上面的代码简单易行,但最好是为列表提供一个生成器,而不是列表本身。这样,整个datetime数组就不需要生成并存储到内存中,除非它需要这样做。下面是这种方法的外观:
用法:
输出:
sczxawaw4#
gcxthw6b5#
你需要把它转换成一个带有字符串的列表:
sg3maiej6#
有一种简单得多的方法,只需修改代码即可使用,如下所示;
sbtkgmzw7#
您可以使用https://github.com/zachwill/moment.git中的moment库来简化您的工作。
然后你就有了选择
或者你可以迭代
s2j5cfk08#
如果您想要日期列表的字符串,而不仅仅是日期时间索引,那么还需要使用strftime格式化
ar5n3qh59#
这是一个有点老的问题,但我想我应该把我的建议,因为其中一些似乎过于复杂的答案: