如何在python中获取两个日期之间的所有日期(月、日和年)?

如何在python中获取两个日期之间的所有日期(月、日和年)?,python,datetime,date,Python,Datetime,Date,情况: 我试图构造一个简单的方法,它接受两个不同的整数,表示两个不同的日期。以2012年5月25日的20120525和2012年6月26日的20120627为例。我希望此方法返回这些整数类型的列表,这些整数类型表示两个日期参数之间的所有日期 问题: 我可以得到一些关于如何做到这一点以及如何处理每个月28、29、30或31天的建议吗。我想我可以通过对10的幂进行除法/模化,将这些数字提取为整数,然后根据上述特定条件对这些数字进行递增,但我觉得必须有一种更简单的方法来实现这一点。你不必重新发明轮子。

情况: 我试图构造一个简单的方法,它接受两个不同的整数,表示两个不同的日期。以2012年5月25日的20120525和2012年6月26日的20120627为例。我希望此方法返回这些整数类型的列表,这些整数类型表示两个日期参数之间的所有日期

问题:
我可以得到一些关于如何做到这一点以及如何处理每个月28、29、30或31天的建议吗。我想我可以通过对10的幂进行除法/模化,将这些数字提取为整数,然后根据上述特定条件对这些数字进行递增,但我觉得必须有一种更简单的方法来实现这一点。

你不必重新发明轮子。只需将字符串解析为datetime对象,然后让python为您计算:

from dateutil import rrule
from datetime import datetime

a = '20120525'
b = '20120627'

for dt in rrule.rrule(rrule.DAILY,
                      dtstart=datetime.strptime(a, '%Y%m%d'),
                      until=datetime.strptime(b, '%Y%m%d')):
    print dt.strftime('%Y%m%d')
印刷品

20120525
20120526
20120527
…
20120625
20120626
20120627

不使用
rrule
的替代解决方案如下:

import datetime

d1 = datetime.date(2015, 1, 1)
d2 = datetime.date(2015, 2, 6)
days = [d1 + datetime.timedelta(days=x) for x in range((d2-d1).days + 1)]

for day in days:
    print(day.strftime('%Y%m%d'))
输出:

20150101
20150102
20150103
<snip>
20150205
20150206
20150101
20150102
20150103
20150205
20150206
您可以使用

这将产生

DatetimeIndex(['2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',
               '2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01',
               ...
               '2012-06-22', '2012-06-23', '2012-06-24', '2012-06-25',
               '2012-06-26', '2012-06-27'],
               dtype='datetime64[ns]', freq='D')
另见和
DatetimeIndex(['2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',
               '2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01',
               ...
               '2012-06-22', '2012-06-23', '2012-06-24', '2012-06-25',
               '2012-06-26', '2012-06-27'],
               dtype='datetime64[ns]', freq='D')