2017-07-14 18 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 
相關問題