能否在ISO8601中可靠地检查python中的日期字符串相等性?

能否在ISO8601中可靠地检查python中的日期字符串相等性?,python,string,date,Python,String,Date,这似乎是可行的,但我在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 ipdb>'2

这似乎是可行的,但我在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
ipdb>'2017-01-01'>'2016-12-31'
真的
ipdb>'2017-01-01'<'2016-12-31'
假的
ipdb>'2017-01-01'>='2016-12-31'
真的
ipdb>'2017-07-01'<'2017-12-31'
真的

虽然您的方法在某些情况下有效(尤其是您给出的方法和所有类似的方法),但在某些情况下确实会失败。例如,允许您以周格式给出日期,例如2017年第1周的第一天(1月2日)可以写为“2017-W02-1”

如果您尝试这样做,您会遇到一个问题:

>>> '2017-12-31' > '2017-W01-1'
False
虽然这应该是真的

如果您确实希望支持ISO 8601,那么应该使用适当的软件包,如(install by
pip install isodate
)。然后,您甚至可以正确地处理这些角落案例:

>>> isodate.parse_date('2017-12-31') > isodate.parse_date('2017-W01-1')
True

只要它是相同的格式并且遵守ISO8601,它就可以正常工作。ISO8601这样形成的原因之一是易于进行字符串比较。