将字符串列表正确格式化为python中的日期列表

时间:2018-11-08 12:15:28

标签: python list datetime

在获得最长日期时间之前,我有一个要格式化为日期列表的字符串列表。

列表如下:

StrList = ['date_range Date Posted: Thu, 08 11 2018 12:12:55 GMT',
 'date_range Date Posted: Thu, 08 11 2018 10:53:49 GMT',
 'date_range Date Posted: Thu, 08 11 2018 09:55:08 GMT',
 'date_range Date Posted: Wed, 07 11 2018 14:23:56 GMT',
 'date_range Date Posted: Wed, 07 11 2018 14:23:12 GMT',
 'date_range Date Posted: Wed, 07 11 2018 09:07:47 GMT',
 'date_range Date Posted: Tue, 06 11 2018 11:44:51 GMT',
 'date_range Date Posted: Mon, 05 11 2018 16:17:51 GMT',
 'date_range Date Posted: Mon, 05 11 2018 14:07:41 GMT',
 'date_range Date Posted: Mon, 05 11 2018 14:03:19 GMT',
 'date_range Date Posted: Mon, 05 11 2018 13:07:10 GMT',
 'date_range Date Posted: Mon, 05 11 2018 13:05:56 GMT',
 'date_range Date Posted: Mon, 05 11 2018 11:41:31 GMT']

我想获取一个仅包含每个列表元素的提取日期和时间部分的列表,然后查找所有元素的最大日期时间。

例如所需的输出:

 DateList = ['08-11-2018 12:12:55',
 '08-11-2018 10:53:49 GMT',
 '08-11-2018 09:55:08 GMT',
 '07-11-2018 14:23:56 GMT',
 '07-11-2018 14:23:12 GMT',
 '07-11-2018 09:07:47 GMT',
 '06-11-2018 11:44:51 GMT',
 '05-11-2018 16:17:51 GMT',
 '05-11-2018 14:07:41 GMT',
 '05-11-2018 14:03:19 GMT',
 '05-11-2018 13:07:10 GMT',
 '05-11-2018 13:05:56 GMT',
 '05-11-2018 11:41:31 GMT']

然后最后一步将是获取最大日期时间,在这种情况下将是:

MaxDate = 08-11-2018 12:12:55

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用datetime.datetime.strptime

from datetime import datetime

str_list = ['date_range Date Posted: Thu, 08 11 2018 12:12:55 GMT',
 'date_range Date Posted: Thu, 08 11 2018 10:53:49 GMT',
 'date_range Date Posted: Thu, 08 11 2018 09:55:08 GMT',
 'date_range Date Posted: Wed, 07 11 2018 14:23:56 GMT',
 'date_range Date Posted: Wed, 07 11 2018 14:23:12 GMT',
 'date_range Date Posted: Wed, 07 11 2018 09:07:47 GMT',
 'date_range Date Posted: Tue, 06 11 2018 11:44:51 GMT',
 'date_range Date Posted: Mon, 05 11 2018 16:17:51 GMT',
 'date_range Date Posted: Mon, 05 11 2018 14:07:41 GMT',
 'date_range Date Posted: Mon, 05 11 2018 14:03:19 GMT',
 'date_range Date Posted: Mon, 05 11 2018 13:07:10 GMT',
 'date_range Date Posted: Mon, 05 11 2018 13:05:56 GMT',
 'date_range Date Posted: Mon, 05 11 2018 11:41:31 GMT']

date_list = [datetime.strptime(s.split(', ')[-1], '%d %m %Y %H:%M:%S %Z') for s in str_list]

类似于

[datetime.datetime(2018, 11, 8, 12, 12, 55),
 datetime.datetime(2018, 11, 8, 10, 53, 49),
 datetime.datetime(2018, 11, 8, 9, 55, 8),
 datetime.datetime(2018, 11, 7, 14, 23, 56),
 datetime.datetime(2018, 11, 7, 14, 23, 12),
 datetime.datetime(2018, 11, 7, 9, 7, 47),
 datetime.datetime(2018, 11, 6, 11, 44, 51),
 datetime.datetime(2018, 11, 5, 16, 17, 51),
 datetime.datetime(2018, 11, 5, 14, 7, 41),
 datetime.datetime(2018, 11, 5, 14, 3, 19),
 datetime.datetime(2018, 11, 5, 13, 7, 10),
 datetime.datetime(2018, 11, 5, 13, 5, 56),
 datetime.datetime(2018, 11, 5, 11, 41, 31)]

然后简单地获得最大值和最小值:

max_date = max(date_list)

min_date = min(date_list)

输出

max: datetime.datetime(2018, 11, 8, 12, 12, 55)
min: datetime.datetime(2018, 11, 5, 11, 41, 31)

您可以执行以下操作以相同的字符串形式恢复日期

max_date.strftime('%d %m %Y %H:%M:%D GMT')

输出

'08 11 2018 12:12:55 GMT'
相关问题