2016-05-04 56 views
-1

我正在使用python 3.5。將字符串轉換爲不帶零填充的Python日期時間對象

我有一個字符串格式化爲mm/dd/yyyy H:MM:SS AM/PM,我想作爲一個Python日期時間對象。

這是我試過的。

date = "09/10/2015 6:17:09 PM" 
    date_obj = datetime.datetime.strptime(date, '%d/%m/%Y %I:%M:%S %p') 

但是,這會得到一個錯誤,因爲小時不是零填充。格式是根據 datetime documentation上的表完成的,該表不允許小時有一位數字。

我已經嘗試拆分日期,添加一個零,然後重新組裝字符串回來,而這個工程,這似乎不太健壯/理想。

date = "09/10/2015 6:17:09 PM" 
    date = date.split() 
    date = date[0] + " 0" + date[1] + " " + date[2] 

如何獲得直接datetime對象,或者用於填充小時將是有益的更好的方法的任何建議。

謝謝。

+1

我'2015年10月9日18:17:09'作爲輸出在Python 2.7中。你能分享特定的例外嗎?你是哪個版本的python? –

+0

這不是問題的原因,但您聲明日期字符串被格式化爲「mm/dd/yyyy」,但代碼假定「%d /%m /%Y」,即日期和月份互換。 – mhawke

回答

0

有沒有錯,此代碼:

>>> date = "09/10/2015 6:17:09 PM" 
>>> date_obj = datetime.datetime.strptime(date, '%m/%d/%Y %I:%M:%S %p') 
>>> date_obj 
datetime.datetime(2015, 9, 10, 18, 17, 9) 
>>> print(date_obj) 
2015-09-10 18:17:09 

datetime對象的單個屬性是整數,而不是字符串,並且內部表示採用24小時值的小時。

請注意,當您聲明輸入格式爲mm/dd/yyyy時,我已將格式字符串的日期和月份互換。

但似乎你真正想要它作爲填零小時的字符串,所以你可以使用datetime.strftime()這樣的:

>>> date_str = date_obj.strftime('%m/%d/%Y %I:%M:%S %p') 
>>> print(date_str) 
09/10/2015 06:17:09 PM 

# or, if you actually want the output format as %d/%m/%Y.... 
>>> print(date_obj.strftime('%d/%m/%Y %I:%M:%S %p')) 
10/09/2015 06:17:09 PM 
相關問題