比较python中的日期字符串

Spi*_*ico 6 python datetime date python-3.x

>> a ='2009-05-10'
>>> b ='2009-06-10'
>>> a > b
False
>>> a < b
True
>>> type(a)
<class 'str'>
>>> c = '2009-06-09'
>>> b < c
False
>>> b > c
True
>>> c ='2008-07'
>>> b > c
True
>>> a > c
True
Run Code Online (Sandbox Code Playgroud)

我试图在不使用库的情况下比较python3中的日期,它似乎正常工作.这是真的吗?python是否真的理解这些字符串是日期并根据日期格式进行比较,还是在幕后进行其他事情?

Kas*_*mvd 10

不,这种行为背后没有空间的东西.事实上,Python比较字符串lexicographicaly,在这种情况下它可以工作,但它不是正确的方法,因为它也可以接受错误的日期!

这是一个反例:

>>> a ='2009-33-10'
>>> b ='2009-11-1'
>>> a>b
True
Run Code Online (Sandbox Code Playgroud)

作为处理日期的正确方法,您应该使用datetime具有许多工具来处理日期对象的模块.

您可以将字符串转换为日期对象,datetime.datetime.strptime然后您可以使用基本算术运算来比较日期对象,因为这个模块已经支持它们.

在此输入图像描述

  • @Kasramvd 你的解释没有问题。但是,如果日期时间字符串被统一格式化(因此您的示例不适用)并且直接从日期时间对象进行格式化,那么直接日期时间字符串比较实际上是 Python3 的一个很好的优点! (2认同)