Python 一个简洁的日期范围函数,类似于内置范围函数
我试图找到一种更简洁的方法,在两个值之间生成一系列日期。我希望此函数类似于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: #
#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