2012-04-06 20 views
0

こんにちは私は、時間に依存し、日時オブジェクトを使っていくつかの興味深い動作を観察しているプログラムを書いています。私はあるに/がトラブルを抱えていて働いているのコード...Pythonでの日時比較の動作

now = datetime.now() 
time_changed_state = some datettime object previously initialized 
time_delay = some integer 
time_arrival = time_changed_state + timedelta(minutes=time_delay) 

if now < time_arrival: 
    do something 
elif now >= time_arrival: 
    do something different 

は、私は確かにコードはように動作しますotのために、テストケースで働いている私はそれにしたいと思いますが、それはいないようですに。

ときtime_delay = 0私は奇妙な行動を発見し、私はtime_changed_stateは、この関数呼び出しの前にinitilizated datetimeオブジェクトだったと今、関数内で初期化されてから今> = time_arrivalだろうという事実を知っています。しかし、 "do something"コードは "何か別のコードを行う"ではなく実行されています。

ありがとうございます!

+1

「time_arrival」は過去ですか? –

+0

ええ、私はそれが過去にあると確信しています。私は過去のtime_changed_stateを初期化するだけでなく、明らかにfalseでなければならないと評価しているところで、以下のコードでテストを試みました。 –

答えて

1

あなたのコードを編集しました。これはあなたが期待しているものですか?

from datetime import datetime 
from datetime import timedelta 

now = datetime.now() 
time_changed_state = now - timedelta(hours=2) 
time_delay = 0 
time_arrival = time_changed_state + timedelta(minutes=time_delay) 

if now < time_arrival: 
    print 'something' 
elif now >= time_arrival: 
    print 'something different' 
+0

私は時間の遅れをハードコーディングしてみましたが、それはまだ「何か違う」の代わりに「何か」をプリントしています...私には意味がありません。 –

+0

'time_changed_state'が 'now'の後に来るとその結果が得られます – pravin

+0

ええ、それは意味があります。私は奇妙な振る舞いをしていますが、たとえ "time_changed_state"の後にあっても、 "now