Python 正在获取2个日期范围内的最后日期

Python 正在获取2个日期范围内的最后日期,python,date,iteration,Python,Date,Iteration,我正在尝试获取某个范围内的所有日期,以列出日期: 当我从2017年1月9日xxx开始到2017年1月11日结束时,我预计以下日期: 2017-01-09 2017-01-10 2017-01-11 问题是我只知道 2017-01-09 2017-01-10 第三次约会我错过了什么 def generate_index_date_list(): # format like "11/Jan/2017:11:11:11 +0200" start_datetime_string = "09/J

我正在尝试获取某个范围内的所有日期,以列出日期:

当我从2017年1月9日xxx开始到2017年1月11日结束时,我预计以下日期:

  • 2017-01-09
  • 2017-01-10
  • 2017-01-11
问题是我只知道

  • 2017-01-09
  • 2017-01-10
第三次约会我错过了什么

def generate_index_date_list():
# format like  "11/Jan/2017:11:11:11 +0200"
start_datetime_string = "09/Jan/2017:11:11:11 +0200"
end_datetime_string = "11/Jan/2017:11:11:11 +0200"

startdate = datetime.strptime(start_datetime_string.split(":")[0], "%d/%b/%Y").date()
enddate = datetime.strptime(end_datetime_string.split(":")[0], "%d/%b/%Y").date()
for single_date in daterange(startdate, enddate):
    print single_date


def daterange(start_date, end_date):
    for n in range(int((end_date - start_date).days)):
        yield start_date + timedelta(n)
您是否尝试过:

def daterange(start_date, end_date):
    for n in range(int((end_date - start_date).days) + 1):
        yield start_date + timedelta(n)

Python
range
生成的数字最多为,但不包括给定的数字。这就是最后一个日期不包括在内的原因。

不要忘记,
范围
上升到但不包括结束值。从数字的角度考虑一下。如果
daterange
4-2
,那么它只会产生2个日期,而如果它是
5-2
,则会产生3个日期。你必须在你的
daterange
函数中添加1。真的xD,我已经认为这一定是有史以来最有趣的事情了。谢谢