2014-02-16 178 views
0

我正在研究Python中的日曆應用程序,它檢查不同參數中的幾個事件。我遇到的一個問題是,在我的代碼的幾個點中,我使用下面顯示的示例來驗證特定事件是「今天」。在Python中檢查時間

if (eventDateTime - TheCurrentDateTime).days = 0: print "Your event is today." 

問題存在,如果它是說,星期一我有周二的事件發生在8:00 A.M。 - 一旦變成8:01 A.M。星期一上午,.days的timedelta減法檢查變爲0,因爲它們只是在事件發生前的幾個小時,而不是幾天。因此,因爲我的日曆每分鐘都會檢查新的更新等,在那段時間過去之後,在週一的其餘時間,它會繼續報告我的週二活動是「今天」。

我想創建一個多條件if語句,以某種方式避免它說「你的事件是今天」。除非已經過了午夜,並且真正進入第二天(活動當天)。

感謝

+3

平等是'==',而不是'='。另外,請不要將單行主體放在與if語句相同的行中。 – ThiefMaster

+0

==的缺乏是一個錯誤,它是單線體的事實純粹只是爲了示例的目的。我的代碼沒有一個是這樣的。 – TekGiant

回答

4

只是比較日期,不受時間:

TheCurrentDate = TheCurrentDateTime.date() 
if eventDateTime.date() == TheCurrentDate: 
    print "Your event is today." 
1

您可以使用(eventDateTime - TheCurrentDateTime).total_seconds() < 86400檢查 「不超過24小時」。

但是,對於「今天」,我希望它會比較實際的一天,而不是小時數。所以比較​​

+2

我想這正是提問者試圖避免的。 –

+0

@DavidRobinson如果你只是把秒轉換成什麼問題? '(24 * 60 * 60)'是一樣可讀的。你可以用自定義函數來擴展DateTime來做到這一點。所以它不壞:) – 2014-02-16 22:04:38

+0

我很確定'timedelta'不能被擴展,因爲它是在C中實現的。 – ThiefMaster