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

时间:2010-10-15 22:46:57

标签: python date strptime rfc3339

有没有人知道如何使用Pythons 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 :(得分:5)

该日期符合ISO 8601标准,或更具体地说是RFC 3339格式。

无法使用strptime解析此类日期。有一个Python issue可以讨论这个问题。

dateutil.parser.parse可以处理各种日期,包括您示例中的日期。

如果您使用外部模块进行XML或RSS解析,那么可能会有一个例程来解析该日期。

答案 1 :(得分:0)

这是找到答案的好方法:使用strftime,构造一个格式字符串,它将发出你所看到的内容。根据定义,该字符串将是使用strptime PARRE所需的字符串。

答案 2 :(得分:0)

如果您尝试解析RSS或Atom供稿,请使用Universal Feed Parser。它支持many date/time formats

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

答案 3 :(得分:-1)

这是标准的XML日期时间格式,ISO 8601.如果您已经在使用XML库,那么它们中的大多数都内置了日期时间解析器。xml.utils.iso8601工作得相当好。

import xml.utils.iso8601
date = xml.utils.iso8601.parse(entry.published.text)

您可以在此处查看其他一些处理方法: http://wiki.python.org/moin/WorkingWithTime