如何从日期列表中找到第三个最新日期

时间:2017-07-15 08:55:26

标签: python list datetime

有一个数组列表形式的日期列表 示例: 11/02/2012 21/04/2019 2061年12月3日 1961年11月9日 22/08/2014

我们必须从上面的列表中返回第三个最新日期

我觉得我们必须先按年份降序排序,然后从该

开始第三个最新日期

请你就此提出建议吗?

4 个答案:

答案 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)

没有使用内置库,一种方法是:

  1. 将年,月和日期转换为元组。例如,"11/02/2012"可以表示为(2012, 02, 11)
  2. 运行sort。
  3. 使用sorted_dates[-3]检索排序列表中的第三个最新日期。
  4. 我们可以通过以下方式获取年,月和日期:

    (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)