2011-08-11 55 views
2

我是python的新手,我寫了一個腳本,用於將字符串日期轉換爲datetime格式。我的問題是無法將datetime對象轉換回字符串進行操作。我有一個日期,例如2011-08-10 14:50:10我所需要的是在日期和時間之間添加一個T,最後添加一個Z。不幸的是即時通訊使用Python 2.3,因爲我的應用程序只會接受。將日期轉換爲字符串以便在python中操作

我的代碼如下:

fromValue= '' 
fromValue = document.Get(self._generic3) 
fromValue = fromValue[:fromValue.rindex(" ")] 
fromValue = datetime.datetime.fromtimestamp(time.mktime(time.strptime(fromValue,"%a, %d %b %Y %H:%M:%S"))) 
+3

嗨克萊頓,歡迎來到堆棧溢出。我建議你發佈一個「工作」的例子(例如,用它的返回值替換對'document.Get'的調用)。 – MattH

回答

3

它看起來就像你正在試圖ISO-8601格式來格式化日期時間。 爲此,請使用isoformat方法。

import datetime as dt 
try: 
    import email.utils as eu 
except ImportError: 
    import email.Utils as eu # for Python 2.3 

date_string="Fri, 08 Aug 2011 14:15:10 -0400" 
ttuple=eu.parsedate(date_string) 
date=dt.datetime(*ttuple[:6]) 
print(date.isoformat()+'Z') 

產生

2011-08-08T14:15:10Z 

這裏是鏈接到在Python2.3文檔isoformatparsedate和。

+0

感謝您的反饋我真的很感激它@unubtu我的字符串進來看起來像這樣「星期五,2011年8月8日14:15:10 -0400」 我已切碎的「-0400」,並保持其餘的我已經轉換爲這種格式的字符串「2011-08-08 14:15:21」我需要從這裏轉換成這'2011-08-08T14:50:10Z',我不能做我得到一個錯誤,說整數當我嘗試分割它時需要 – Clayton

8
toValue = fromValue.strftime("%Y-%m-%dT %H:%M:%SZ") 

這應該很好地工作。 Python 2.3中提供了datetime.strftime

如果可能的話,你最好升級到至少 Python 2.5。多年來,Python 2.3甚至還沒有收到安全補丁。

編輯:此外,你不需要在Python中初始化或聲明變量; fromValue= ''對您的程序沒有影響。

編輯2:在一個評論,你似乎說你擁有了它在一個字符串已經在近正確的格式:

"2011-08-08 14:15:21" 

所以只是做

'T'.join("2011-08-08 14:15:21".split()) + 'Z' 

如果你想在字符串中添加字母。

+0

感謝你幫助我真的幫助了我很多。 @unubtu你的答案工作我所要做的只是指定isoformat,我做過並且工作過!感謝一個工廠 – Clayton