2013-06-12 20 views
3

我在Django视图中将日期时间转换为ISO 8601以推送至Facebook页面事件。我曾尝试datetime.strptimefollowing best advice我选择到:Django dateutil ISO 8601没有'读取'属性错误

eventdate = event.date 
    print eventdate 
    date_iso = dateutil.parser.parse(eventdate) 

EVENTDATE看起来像这样在控制台当我打印2013-06-18 02:50:00但它不会再得到任何之前,我:

Django Version: 1.4.1 
Exception Type: AttributeError 
Exception Value:  
'datetime.datetime' object has no attribute 'read' 
Exception Location: /Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/dateutil/parser.py in get_token, line 72 
Python Executable: /Users/mirth/.virtualenvs/ssc/bin/python 
Python Version: 2.7.2 
Python Path:  
['/Users/mirth/code/django/ssc', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/requests/packages', 
'/Users/mirth/code/django/ssc/main', 
'/Users/mirth/code/django/ssc/main/../', 
'/Users/mirth/code/django/ssc', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg', 
'/Users/mirth/.virtualenvs/ssc/lib/python27.zip', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-darwin', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-mac', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-tk', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-old', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages', 
'/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/PIL'] 

什么这可以吗?谢谢

回答

5

我可以重现该错误信息是这样的:

In [58]: import datetime as DT 

In [59]: eventdate = DT.datetime(2013, 6, 18, 2, 50) 
In [60]: print(eventdate) 
2013-06-18 02:50:00 

In [61]: import dateutil.parser as parser 
In [62]: parser.parse(eventdate) 
AttributeError: 'datetime.datetime' object has no attribute 'read' 

所以在此基础上好像eventdate可能已经是datetime.datetime对象。如果是这样,也没有必要调用

date_iso = dateutil.parser.parse(eventdate) 

要将其转换为ISO8601格式的string,使用

In [66]: eventdate.isoformat() 
Out[66]: '2013-06-18T02:50:00' 
0

错误很明显:你传入一个datetime对象,实际上parse需要一个字符串。

相关问题