Python 带有datetime对象的列表的最后一个元素
我有两个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)
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()
不包括结尾。Dodaterange_2=[start+datetime.timedelta(days=x)表示范围(0,(end-start.days+1)中的x]