2009-11-18 280 views
89

具體來說,我有一些代碼簡化爲這樣:如何使用datetime.strptime解釋期間(上午/下午)?

from datetime import datetime 
date_string = '2009-11-29 03:17 PM' 
format = '%Y-%m-%d %H:%M %p' 
my_date = datetime.strptime(date_string, format) 

# This prints '2009-11-29 03:17 AM' 
print my_date.strftime(format) 

是怎麼回事? Python在分析日期時是否忽略週期說明符還是我在做一些愚蠢的事情?

+4

感謝大家的快速解答。希望我可以多勞多得。 – Triptych 2009-11-18 22:12:01

回答

115

Python的time.strftime docs說:

當與strptime()函數所使用的,%p指令僅 影響輸出小時字段如果%I指令用於解析 小時。

果然,將您的%H更改爲%I使其工作。

+1

呃。當然。謝謝。 – Triptych 2009-11-18 22:10:00

+0

哪個好*除非*您的時間字符串有0.00pm,('%I'從1開始)!! – 2015-04-20 23:10:40

9

嘗試用%I(12小時制的小時)替換%H(24小時制的小時)?

12

您使用了%H(24小時格式)而不是%I(12小時格式)。

29
format = '%Y-%m-%d %H:%M %p' 

格式是使用%H而不是%I。由於%H是「24小時」格式,因此可能只是丟棄了%p信息。如果您將%H更改爲%I,則它工作得很好。

相關問題