以下代码示例:
>>> 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比较操作返回 True 而不是 False ?
答案 0 :(得分:3)
%I
是十二小时制的小时数。除非您提供AM或PM(%p
),否则需要选择AM。凌晨12点(即午夜)是在上午11:59之前。
如果您使用%H
,您将获得24小时制,其中12:00将是正午而不是午夜。
https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
答案 1 :(得分:0)
答案 2 :(得分: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被解释为当天的开始,而11:59
被解释为接近正午,11小时59分钟。