使用 timestring
:
import timestring
dt_1 = "Fri, 13 Apr 2018 13:13:12 +0000 (UTC)"
dt_2 = "Mon, 26 Mar 2018 06:32:59 +0100"
dt_3 = "Tue, 05 Dec 2017 11:03:34 GMT"
dt_4 = "08 Dec 2016 12:00:24"
print(timestring.Date(dt_1))
print(timestring.Date(dt_2))
print(timestring.Date(dt_3))
print(timestring.Date(dt_4))
编辑:
趁机提一下,这里有另一种更酷的方法:
使用dparser
:
import dateutil.parser as dparser
dt_1 = "Fri, 13 Apr 2018 13:13:12 +0000 (UTC)"
dt_2 = "Mon, 26 Mar 2018 06:32:59 +0100"
dt_3 = "Tue, 05 Dec 2017 11:03:34 GMT"
dt_4 = "08 Dec 2016 12:00:24"
print(dparser.parse(dt_1,fuzzy=True))
print(dparser.parse(dt_2,fuzzy=True))
print(dparser.parse(dt_3,fuzzy=True))
print(dparser.parse(dt_4,fuzzy=True))
输出:
2018-04-13 13:13:12+00:00
2018-03-26 06:32:59+01:00
2017-12-05 11:03:34+00:00
2016-12-08 12:00:24
编辑2:
dparser
为什么更酷?
无效的日期会引发 ValueError 异常:
invalid_dt = "Fri, 35 Apr 2018 13:13:12 +0000 (UTC)"
print(dparser.parse(invalid_dt,fuzzy=True))
输出:
ValueError: day is out of range for month
编辑3:
获取day
(日)、month
(月)、year
(年)、hour
(小时)、minute
(分钟)或 second
(秒):
print(dparser.parse(dt_1,fuzzy=True).day)
print(dparser.parse(dt_2,fuzzy=True).month)
print(dparser.parse(dt_3,fuzzy=True).year)
print(dparser.parse(dt_4,fuzzy=True).hour)
print(dparser.parse(dt_4,fuzzy=True).minute)
print(dparser.parse(dt_4,fuzzy=True).second)
编辑4:
如果您想获取日期的名称:
print(datetime.date(dparser.parse(dt_1,fuzzy=True)).strftime("%a")) # Fri
for format in formats
+try ... except
中的strptime
)。 - mfrackowiak