2013-06-12 16 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需要一個字符串。

相關問題