有一个数组列表形式的日期列表 示例: 11/02/2012 21/04/2019 2061年12月3日 1961年11月9日 22/08/2014
我们必须从上面的列表中返回第三个最新日期
我觉得我们必须先按年份降序排序,然后从该
开始第三个最新日期请你就此提出建议吗?
答案 0 :(得分:2)
这是你期望的方式
>>> import datetime
>>> list = ['11/02/2012', '21/04/2019', '12/03/2061', '11/09/1961', '22/08/2014']
>>> d_list = [ datetime.datetime.strptime(d,'%d/%m/%Y') for d in list]
>>> d_list
[datetime.datetime(2012, 2, 11, 0, 0), datetime.datetime(2019, 4, 21, 0, 0), datetime.datetime(2061, 3, 12, 0, 0), datetime.datetime(1961, 9, 11, 0, 0), datetime.datetime(2014, 8, 22, 0, 0)]
>>> sorted(d_list)
[datetime.datetime(1961, 9, 11, 0, 0),
datetime.datetime(2012, 2, 11, 0, 0),
datetime.datetime(2014, 8, 22, 0, 0),
datetime.datetime(2019, 4, 21, 0, 0),
datetime.datetime(2061, 3, 12, 0, 0)]
答案 1 :(得分:1)
假设您在列表中有datetime对象:
l = [list containing datetime objects]
l.sort()
l[2]
应该给你第三个最新日期
答案 2 :(得分:0)
没有使用内置库,一种方法是:
"11/02/2012"
可以表示为(2012, 02, 11)
。sorted_dates[-3]
检索排序列表中的第三个最新日期。我们可以通过以下方式获取年,月和日期:
(d, m, y) = "11/02/2012".split('/')
然后,只需反转元组,然后运行sort。
答案 3 :(得分:0)
因此,在处理日期之前,您实际上必须将其转换为实际的日期时间对象,因此只需执行此操作:
from datetime import datetime
lst = ['11/02/2012' ,'21/04/2019' , '12/03/2061' , '11/09/1961' , '22/08/2014']
lstnew = []
for x in lst:
lstnew.append(datetime.strptime(x, '%d/%m/%Y'))
现在您可以运行排序或找到最大值
用于对列表进行排序,使用sorted(lstnew)
获取最大值max(lstnew)