如何解析EG 2010-04-24T07:47:00.007+02:00与Python Strptime
题
有谁知道如何使用Pythons Strptime方法来解析标题中所述的格式?
我有类似的东西:
import datetime
date = datetime.datetime.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.Z')
我似乎无法弄清楚这是什么样的TimeFormat。顺便说一句,我是Python语言的新手(我曾经习惯C#)。
更新
这就是我根据下面的建议(答案)更改代码的方式:
from dateutil.parser import *
from datetime import *
date = parse(entry.published.text)
解决方案
该日期在ISO 8601中,或更具体地 RFC 3339, , 格式。
这样的日期不能解析 strptime
. 。有个 Python问题 讨论了这一点。
dateutil.parser.parse
可以处理各种日期,包括示例中的日期。
如果您将外部模块用于XML或RSS解析,则可能有一个例程可以解析该日期。
其他提示
这是找到答案的好方法:使用 strftime
, ,构建一个将散发出您看到的格式字符串。根据定义,该字符串将是用来分析时间的字符串 strptime
.
如果您想解析RSS或原子供稿,请使用 通用饲料解析器. 。它支持 许多日期/时间格式.
>>> 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)
这是标准的XML DateTime格式,ISO8601。如果您已经在使用XML库,则大多数都在内置dateTime Parsers。 xml.utils.iso8601
效果很好。
import xml.utils.iso8601
date = xml.utils.iso8601.parse(entry.published.text)
您可以在这里查看其他许多方法来处理:http://wiki.python.org/moin/workingwithtime
不隶属于 StackOverflow