Python 一个简洁的日期范围函数,类似于内置范围函数

Python 一个简洁的日期范围函数,类似于内置范围函数,python,python-2.7,datetime,Python,Python 2.7,Datetime,我试图找到一种更简洁的方法,在两个值之间生成一系列日期。我希望此函数类似于python中的内置范围函数 #Range Function >>>range(1,5) [1,2,3,4] 这是我目前写的: def as_datetime(date_string): try: return datetime.datetime.strptime(date_string, '%d/%m/%Y') except ValueError: #

我试图找到一种更简洁的方法,在两个值之间生成一系列日期。我希望此函数类似于python中的内置范围函数

#Range Function
>>>range(1,5)
[1,2,3,4]
这是我目前写的:

def as_datetime(date_string):
    try:
        return datetime.datetime.strptime(date_string, '%d/%m/%Y')
    except ValueError:
        # The date string was invalid
        return None

x = []
start_date = as_datetime('12/07/2013')
end_date = as_datetime('16/07/2013')

total_days = (end_date - start_date).days + 1

for day_number in range(total_days):
    cd = (start_date + dt.timedelta(days = day_number)).date()
    x.append(cd.strftime('%d/%m/%Y'))

#Output
>>>Print x
['12/07/2013', '13/07/2013', '14/07/2013', '15/07/2013', '16/07/2013']

对我来说,这似乎是一个基本函数的许多代码。如果您能帮助我查找/修改一些代码来执行此操作,那就太好了。

您可以使用生成器编写这些代码

from datetime import datetime, timedelta

def daterange(start, end):
    current = start

    while current < end:
        yield current
        current += timedelta(days = 1)

您可以通过创建
并提供
\uuuu iter\uuu
来改进此实现。这样,您还提供了
\uuuu len\uuuuu
\uuu getitem\uuuu
索引等。

我使用dd/mm/yyyy格式作为条目,其他所有人都在使用(yyyy,dd,mm),我遇到的最大问题就是这种不兼容。@user3374113字符串的转换与您提出的问题无关。你需要更新问题,明确你真正想要的是什么。
start = datetime(2014, 1, 1)
end   = datetime(2014, 1, 4)

for d in daterange(start, end):
    print d