web-dev-qa-db-ja.com

datetime.strptimeで期間(AM / PM)を説明するにはどうすればよいですか?

具体的には、これを単純化するコードがあります。

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日付を解析するときに期間指定子を無視するだけですか、それともバカなことをしていますか?

127
Triptych

Python time.strftime docs say:

Strptime()関数とともに使用すると、%pディレクティブは、%Iディレクティブは、時間を解析するために使用されます。

案の定、%Hから%Iは機能します。

173
Ned Batchelder
format = '%Y-%m-%d %H:%M %p'

形式は%Hの代わりに%Iを使用しています。 %Hは「24時間」形式であるため、おそらく%p情報を破棄するだけです。 %H%Iに変更すればうまく機能します。

42
jamessan

使いました %H(24時間形式)の代わりに%I(12時間形式)。

19
Tim Pietzcker

%H(24時間制の時間)を%I(12時間制の時間)に置き換えてみてください。

14
keithjgrant