Python 日期时间比较不正确,如果比较两个时间,例如:12:00 和 11:59



下面是代码示例:

 >>> 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

为什么日期时间比较操作返回 True 而不是 False

>%I是十二小时制的小时数。除非您提供 AM 或 PM (%p ),否则它需要 AM 选择。上午 12:00(即午夜)在上午 11:59 之前。

如果您使用%H您将获得 24 小时制,其中 12:00 将是中午而不是午夜。

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

在这种情况下

,strptime将"12:00"映射到午夜...格式说明符 %I"表示":"小时(12 小时制)作为零填充的十进制数字。

这里的问题是你指的是哪个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 分钟后。

相关内容

  • 没有找到相关文章

最新更新