2015-07-10 98 views
4
>> 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 

我试图在没有使用库的情况下比较python3中的日期,它似乎工作正常。 这是真实的情况吗? python是否真的明白这些字符串是日期,并根据日期格式进行比较,或者其他内容是在幕后进行的?在python中比较日期字符串

+3

如果你选择一个合理的日期格式类似,字符串的标准辞书排序,工作起来就像知道他们是日期;它**不会**,但。 – jonrsharpe

+0

如果Python只是简单地分析你的字符串内容以找出它们代表的内容,为什么它会有一个内置的[datetime](https://docs.python.org/2/library/datetime.html)模块? –

+0

是的。现在事情很清楚。谢谢。 – SpiderRico

回答

7

不,这种行为背后没有空间。事实上,Python比较了字典中的字典,在这种情况下,它是有效的,但它不是正确的方法,因为它也可以接受错误的日期!

这里是一个反例

>>> a ='2009-33-10' 
>>> b ='2009-11-1' 
>>> a>b 
True 

至于对付的约会,你应该使用datetime模块里面有很多的工具与Date对象的工作之有道。

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

enter image description here

+0

@Kasramvd你的解释没有问题。但是,当datetime字符串统一格式化(以便您的示例不适用)并且格式化为datetime对象的上下文时,那么直接的datetime字符串比较实际上是Python3的一个很好的特性! – Devy

+0

@Devy事实上,在这种情况下,你可以。但是,基本上你最好不要这样做(因为通常不能保证总能得到一致的格式),除非它能够给你带来显着的性能改变。 – Kasramvd