如何获取给定开始日期和结束日期的中间日期?
问题描述:
start_date = '07_Nov_2011'
end_date = '10_Jan_2012'
我想打印在同一格式的所有中间日期:如何获取给定开始日期和结束日期的中间日期?
day_month_year
如果我能以某种方式转换起始日期到日期类型我可以这样做:
sdate+timedelta(1)).strftime('%d_%b_%Y')
如何转换它?还是有更好的方法来做到这一点?
答
您可以使用datetime.datetime.strptime(...)
做转换。就像这样:
>>> datetime.datetime.strptime('07_Nov_2011', '%d_%b_%Y').date()
datetime.date(2011, 11, 7)
您可以打印所有像这样的东西中间日期:
>>> start_date = '07_Nov_2011'
>>> end_date = '10_Jan_2012'
>>>
>>> first = datetime.datetime.strptime(start_date, '%d_%b_%Y')
>>> last = datetime.datetime.strptime(end_date, '%d_%b_%Y')
>>> for i in xrange((last-first).days):
... print (first+datetime.timedelta(i)).strftime('%d_%b_%Y')
...
07_Nov_2011
08_Nov_2011
09_Nov_2011
10_Nov_2011
11_Nov_2011
etc.
答
您可以分析日期,就像这样:
import datetime
start_date = '07_Nov_2007'
end_date = '10_Nov_2007'
startDate = datetime.datetime.strptime(start_date, '%d_%b_%Y')
endDate = datetime.datetime.strptime(end_date, '%d_%b_%Y')
oneDay = datetime.timedelta(days = 1)
currentDate = startDate
while currentDate <= endDate:
print currentDate
currentDate += oneDay