2012-09-12 35 views
2

這裏是我的代碼,它只是應該基本不變年底動工+ 25分鐘。 我只是想知道是否有方法將datetime.datetime.now()更新爲當前時間。現在,它只是停留在我第一次使用模塊的時候。 所以if語句永遠不會是真的。自動更新存儲datetime.datetime.now的值()

import datetime 
start = datetime.datetime.now() 
end = start + datetime.timedelta(minutes = 25) 
if start == end: 
    end = end + datetime.timedelta(minutes = 25) 
+1

嗨,你真的需要標記你正在使用哪種編程語言的問題,這樣我們才能知道如何提供幫助 –

+0

如果你告訴你打算對這段代碼做什麼會更好,因爲目前它不會讓感。 datetime.now()總是返回當前時間,每次調用。如果放在'start'中,它將不會被更新,因爲它在一個變量中 – CharlesB

+0

它說明了我打算在頂部做什麼。但是,謝謝。 – tommo

回答

2

正如CharlesB所建議的,啓動變量沒有更新。你需要在你想要進行測試的時候獲得現在的價值。

重寫行:

if start == end: 

if datetime.datetime.now() > end: 

編輯 Tommo的評論之後,我覺得另一種解決方案可能會更容易。

import time 
while True: 
    putMessageToScreen() 
    time.sleep(25*60) 
+0

謝謝配合! :D現在測試。我也意識到==錯誤。它不會工作,即使它應該有,除非我確實做到了在正確的時間笑 – tommo

+0

:仍然不起作用.... hmmmm .... 編輯:好吧,我想這是因爲最終還是使用start定義。 – tommo

+0

它現在有效嗎? –

0

如果您希望在後續引用中更改值,您希望使用函數調用,而不是存儲的變量。

原則上,您可以通過繼承datetime.datetime並定義__add__方法來重新計算datetime.datetime.now()來使上述代碼按照自己的想法完成,但這不是一個好主意。

+0

謝謝你,我會看看,只是爲了興趣,即使我不應該這樣做。 – tommo

+0

我應該提到這是當你添加將趕上一個特殊的情況,但不是減,打印等真的,我的觀點僅僅是有一些方法推遲直到後來的行動。 –