Python转换日期时间不起作用

时间:2013-02-16 10:21:49

标签: python datetime

我正在尝试将字符串解析为python datetime对象,这是代码:

created = datetime.strptime(r.json()[x]["created_at"], "%a %b %d %H:%M:%S +0000 %Y") 

我得到的错误是:

ValueError: time data '"Wed Jan 16 22:08:18 +0000 2013"' does not match format '%a %b %d %H:%M:%S +0000 %Y'

它应该是正确的,显然我做错了。作为一个注释,r.json以unicode的形式返回文本,但我也尝试了str()转换。

完整的计划:

import requests
from datetime import datetime
from simplejson import dumps

url = 'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name='
username = 'gtklondike'
count = '5'

url += username + "&count=" + count

r = requests.get(url)

x = 0
while x < count:
    print "<div id='tw-body'>" + r.json()[x]["text"] + "</div>"
    created = datetime.strptime(dumps(r.json()[x]["created_at"]), "%a %b %d %H:%M:%S +0000 %Y") 
    print "<div id='tw-date'>Date: " + r.json()[x]["created_at"] + "</div><br />\n" # TMP --> until I get datetime working... but at least it shows you the date
    x = x + 1

3 个答案:

答案 0 :(得分:3)

在我看来,你的字符串中有一组额外的引号 - 一个'表示它是一个字符串,一个“在字符串中。”

尝试:

created = datetime.strptime((r.json()[x]["created_at"]).strip('"'), "%a %b %d %H:%M:%S +0000 %Y") 

strip('"')从字符串中删除"

答案 1 :(得分:2)

我发现了这个问题! @wrgrs解决方案有效,但实际上它是来自dumps()围绕它,创建了一组额外的引号。 (这是他的解决方案引发了我的想法)

created = datetime.strptime(r.json()[x]["created_at"], "%a %b %d %H:%M:%S +0000 %Y") 

工作得很好!

答案 2 :(得分:0)

我会使用Delorean提供的解析函数来处理与strptime的未来交易,例如

>>> from delorean import parse
>>> parse("2011/01/01 00:00:00 -0700")
Delorean(datetime=2011-01-01 07:00:00+00:00, timezone=UTC)

它接受各种字符串输入,并考虑到不同的时区,并提供简单的移位机制,以便在delorean对象上检索所需的日期时间对象简单.datetime