2012-02-27 130 views
2

I'me試圖在Django,其中保存和顯示在此日期格式使用this eventCalendar更改日期格式

2012-02-27T13:15:00.000+10:00 

但是當我保存的事件在數據庫中,他們以這種格式保存:

Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time) 

因此數據庫中的事件不會出現在日曆上,因爲這種格式。我怎樣才能轉換這種格式? 我嘗試了一些這樣的事:

datetime.strptime(mydatetime, "%Y-%m-%dT%H:%M:%S+0000") 

但我反覆得到這樣的錯誤:

'module' object has no attribute 'strptime' 

編輯:日期字符串格式

回答

5

strptime用來解析字符串轉換爲日期時間對象。格式字符串指示如何解析字符串,而不是您希望日期時間在稍後打印爲字符串時採用的格式。所以首先你需要使格式字符串匹配輸入字符串的日期格式。

strptime獲得日期時間後,可以使用strftime和當前的格式字符串將其顯示到所需的顯示中。

這就是說,雖然看起來你的進口存在問題。錯誤似乎表明您已完成:

import datetime 
datetime.strptime(...) 

這是不正確的。 strptimestrftime熄滅datetime.datetime方法,所以你需要進行修改你的進口,如:

from datetime import datetime 

或者修改您的通話到strptime,如:

datetime.datetime.strptime(...) 

UPDATE

你」重新開始使用像Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time)這樣的字符串。 Python非常棒,但它不是無所不知的;如果你想將其轉換爲datetime你必須告訴它如何。這是您傳遞給strptime的格式字符串的用途。您需要創建一個格式字符串,用於表示數據庫中表示的當前字符串日期和時間(向讀者展開練習)。反過來看,你想要實際上代表一個datetime,你會怎麼做。

這將網絡你datetime。從那裏,你現在可以將datetime格式化爲strftime的字符串,這次傳遞了你想要的實際格式。

所以這個過程是:

  1. 創建格式字符串從數據庫
  2. 代表你當前字符串使用該格式字符串作爲參數來strptime獲得datetime
  3. 創建格式代表你想要日期格式的字符串(已經完成)
  4. 使用該格式字符串作爲參數strftime來轉換datetime從步驟2到您想要的字符串。
+0

tnx,當從數據庫中獲取datetime並試圖格式化它們以返回它們作爲json來顯示時,我有這個錯誤:time data'Mon Feb 27 2012 13:15:00 GMT + 0330(Iraq Standard時間)「不符合格式'%Y-%m-%dT%H:%M:%S + 0000',這聽起來像它不能改變格式! – 2012-02-27 19:04:22

+1

同樣,傳遞給'strptime' *的格式字符串必須*告訴它如何解析當前基於字符串的日期和時間,*不是*您最終希望如何。 – 2012-02-27 20:11:49

+0

對不起!但我真的不明白U :( – 2012-03-02 05:08:40