2011-11-15 99 views
208

如何使用Python比較兩個日期以查看哪個日期更晚?如何比較兩個日期?

例如,我想檢查當前日期是否已超過我創建的此列表中最後一個日期的假日期間,以便它會自動發送電子郵件,通知管理員更新holiday.txt文件。

+10

呃,你使用''<' and '>運營商,就像任何其他的比較。 –

+10

@JohnMachin:你用原型'int compare_dates(void const *,void const *)'編寫一個函數,將兩個參數都轉換爲'struct Date *'並實現比較邏輯。對於Python新手來說,這可能不是那麼明顯。 –

+1

@larsmans:對不起.... s/any_language/any_reasonable_language /任何習慣了不合理語言的人都應該花幾分鐘時間仔細閱讀文檔並嘗試使用date1

回答

267

使用datetime方法和運算符<及其親屬。

>>> from datetime import datetime 
>>> past = datetime.now() 
>>> present = datetime.now() 
>>> past < present 
True 
>>> datetime(3000, 1, 1) < present 
False 
>>> present - datetime(2000, 4, 4) 
datetime.timedelta(4242, 75703, 762105) 
+8

這也適用於時區感知值,如果有人想知道。 –

+9

好的變量名! – Himanshu

+0

'past'和'present'有什麼不同?我無法理解你的榜樣,其結果沒有意義。 – Emadpres

30

datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2)將返回True

datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2)將返回datetime.timedelta(-1)

datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2)將返回datetime.timedelta(1)

請參閱docs

39

使用time

比方說,你擁有初始日期作爲字符串像這樣:
date1 = "31/12/2015"
date2 = "01/01/2016"

你可以做到以下幾點:
newdate1 = time.strptime(date1, "%d/%m/%Y")newdate2 = time.strptime(date2, "%d/%m/%Y")將它們轉換爲Python的日期格式。然後,比較明顯:

newdate1 > newdate2將返回False
newdate1 < newdate2將返回True