1

以下のコード例:

 >>> from datetime import datetime
 >>> future = datetime.strptime('12:00', '%I:%M')
 >>> past = datetime.strptime('11:59', '%I:%M')
 >>> future < past 
 >>> True # expected False, because '12:00' > '11:59'
 >>> past_2 = datetime.strptime('11:58', '%I:%M')
 >>> past < past_2
 >>> False

datetime 比較演算がFalseではなくTrueを返すのはなぜですか?

4

3 に答える 3

4

%Iは 12 時間時計の時間です。AM または PM ( %p) を指定しない限り、AM が選択されます。午前 12:00 (午前 0 時) は、午前 11:59 より前です。

使用%Hすると、24 時間制になり、12:00 が真夜中ではなく正午になります。

https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

于 2016-07-06T12:41:24.700 に答える
0

ここでの問題は 12:00あなたが何を意味するかです。問題の日時を出力すると、次のことが理解できるかもしれません。

future, past, past_2

次の値があります。

(datetime.datetime(1900, 1, 1, 0, 0),
 datetime.datetime(1900, 1, 1, 11, 59),
 datetime.datetime(1900, 1, 1, 11, 58))

ご覧のとおり、12:00 は 1 日の始まりと解釈されますが、1111:59時間 59 分後のほぼ正午と解釈されます。

于 2016-07-06T12:46:37.200 に答える
0

この場合、strptime は '12:00' を真夜中にマップします ... 書式指定子 %I は「意味」: 「ゼロが埋め込まれた 10 進数としての時間 (12 時間制)」。

于 2016-07-06T12:40:45.193 に答える