Python 带有datetime对象的列表的最后一个元素

Python 带有datetime对象的列表的最后一个元素,python,Python,我有两个datetime对象的“范围”,由开始日期和停止日期定义。 我想为前两个范围中的匹配天数创建一个新的“范围”(开始和停止日期) 下面是我尝试过的,但我对列表有问题:它似乎没有正确地获取最后一个元素 import datetime #First date range is next week from monday to sunday: next_week_day = datetime.datetime.now().date() + datetime.timedelta(days=7)

我有两个datetime对象的“范围”,由开始日期和停止日期定义。 我想为前两个范围中的匹配天数创建一个新的“范围”(开始和停止日期)

下面是我尝试过的,但我对列表有问题:它似乎没有正确地获取最后一个元素

import datetime

#First date range is next week from monday to sunday:
next_week_day = datetime.datetime.now().date() + datetime.timedelta(days=7)
monday = next_week_day - datetime.timedelta(days=next_week_day.weekday())
sunday = monday + datetime.timedelta(days=7)

daterange = [monday + datetime.timedelta(days=x) for x in range(0, (sunday-monday).days)]
  
#Second daterange can be anything:
start = datetime.date(2020, 8, 2)
end = datetime.date(2020, 9, 25)
daterange_2 = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)]
  
#then I create a list to add matching days to create the new range
date_list = []
for date in daterange:
  for date_2 in daterange_2:
    if date_2 == date:
      date_list.append(date)

#and retrieve first and last day in list
first_date = date_list[0]
second_date = date_list[-1]

print(first_date, second_date)
print(type(first_date), type(second_date))
打印第二个日期的
'2020,9,24'
,而不是
'2020,9,25'

我遗漏了什么?

您需要更新
daterange
daterange\u 2
的范围,以包括所有必要的日期:

import datetime

# First date range is next week from monday to sunday:
next_week_day = datetime.datetime.now().date() + datetime.timedelta(days=7)
monday = next_week_day - datetime.timedelta(days=next_week_day.weekday())
sunday = monday + datetime.timedelta(days=7)

daterange = [monday + datetime.timedelta(days=x) for x in range(0, (sunday - monday).days + 1)]

# Second daterange can be anything:
start = datetime.date(2020, 8, 2)
end = datetime.date(2020, 9, 25)
daterange_2 = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days + 1)]

# then I create a list to add matching days to create the new range
date_list = []
for date in daterange:
    for date_2 in daterange_2:
        if date_2 == date:
            date_list.append(date)

# and retrieve first and last day in list
first_date = date_list[0]
second_date = date_list[-1]

print(first_date, second_date)
print(type(first_date), type(second_date))
range()
不包括结尾。Do
daterange_2=[start+datetime.timedelta(days=x)表示范围(0,(end-start.days+1)中的x]