Skip to main content
 首页 » 编程设计

Python之具有未知行为的 strptime 格式

2025年05月04日13yjmyzz

我有一个时间格式:

Sat Jan 17 04:33:06 +0000 2015 

我无法匹配 strptime 格式。我能找到的最接近的:basic datetime types是 %c “Locale 的适当日期和时间表示。”但是,这并不完全匹配。

我要去:

time_vec = [datetime.strptime(str(x),'%c') for x in data['time']] 

如有任何帮助,我们将不胜感激。

请您参考如下方法:

对我来说很好......:

>>> s='Sat Jan 17 04:33:06 +0000 2015' 
>>> f='%a %b %d %X %z %Y' 
>>> import datetime 
>>> datetime.datetime.strptime(s,f) 
datetime.datetime(2015, 1, 17, 4, 33, 6, tzinfo=datetime.timezone.utc) 

这是在 Python 3.4 中。在 Python 2.7 中,我可以重现您的错误——它不接受应有的 %z。当然,最好的解决方法是升级到 Python 3。如果你不能,你需要一些技巧,比如:

import re 
 
s = re.sub('[+-]\d+', '', s) 

并从格式中删除 %z。如果您确实需要该时区信息,请在 re.sub 之前先提取它(使用 re.search,相同的模式)以“清理” s 解决 Python 2 错误。