如何用Python strptime解析2010-04-24T07:47:00.007+02:00

3 投票
4 回答
1428 浏览
提问于 2025-04-16 05:34

有没有人知道怎么用Python的strptime方法解析标题中提到的格式?

我有一个类似这样的东西:

import datetime    
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')

我搞不清楚这是什么样的时间格式。顺便说一下,我是Python的新手(我习惯用C#)。

更新

这是我根据下面的建议(回答)修改后的代码:

from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)

4 个回答

0

如果你想解析RSS或Atom订阅源,可以使用Universal Feed Parser。这个工具支持很多种日期和时间格式

>>> import feedparser                 # parse feed
>>> d = feedparser.parse("http://stackoverflow.com/feeds/question/3946689")
>>> t = d.entries[0].published_parsed # get date of the first entry as a time tuple
>>> import datetime
>>> datetime.datetime(*t[:6])         # convert time tuple to datetime object
datetime.datetime(2010, 10, 15, 22, 46, 56)
0

这里有个好办法来找到答案:使用 strftime,构建一个格式字符串,这个字符串会输出你看到的内容。根据定义,这个字符串就是用来用 strptime 解析时间所需要的字符串。

5

这个日期是按照ISO 8601格式写的,具体来说是RFC 3339格式。

这种格式的日期不能用strptime来解析。这里有一个Python的问题在讨论这个情况。

dateutil.parser.parse可以处理各种各样的日期,包括你例子中的日期。

如果你在使用外部模块来解析XML或RSS,里面可能已经有处理这种日期的功能了。

撰写回答