2017-07-14 21 views
2

这似乎有效,但我没有足够的Python经验来说“这将始终有效”。有人可以在这里用一个打破这个的例子来证实或陈述吗?你可以在ISO8601中可靠地检查python中的日期字符串相等吗?

ipdb> '2017-01-01' > '2016-12-31' 
True 
ipdb> '2017-01-01' < '2016-12-31' 
False 
ipdb> '2017-01-01' >= '2016-12-31' 
True 
ipdb> '2017-07-01' < '2017-12-31' 
True 
+2

只要它是相同的格式和尊重ISO8601,它应该工作得很好。 ISO8601形成的原因之一就是简单的字符串比较。 – zwer

回答

0

虽然你的方法在某些情况下(特别是你给的和所有喜欢它们的)有效,但它在某些情况下会失败。例如,ISO 8601可让您以星期格式给出日期,例如2017年第一周的第一天(1月2日)可写为“2017-W02-1”。

如果你尝试,你会得到一个问题:

>>> '2017-12-31' > '2017-W01-1' 
False 

虽然这应该是真实的。

如果您确实需要ISO 8601支持,则应使用适当的包,如isodate(由pip install isodate安装)。那么你甚至可以做适当的角落案例:

>>> isodate.parse_date('2017-12-31') > isodate.parse_date('2017-W01-1') 
True 
相关问题