2013-03-24 204 views
1

我有一個問題比較php中的兩個unix時間戳。PHP比較UNIX時間戳

$time_now = mktime(); 
if($auction->time_end > $time_now){ 
    //true 
} 
else{ 
    //false 
} 

$ auction-> time_end是1362579127並從db中設置爲int。 $ time_now是例如1364129253並設置爲int,兩者都使用var_dump進行檢查,並確實以int形式返回。

問題是,PHP似乎認爲1362579127是大於1364129253(返回false),它不是..我在這裏錯過了什麼?如果我將這些值輸入到if語句中,它就像它應該那樣工作,但是當它比較對象時,它似乎不喜歡它。

+1

你可以做''var_dump' $拍賣方式> time_end'之前的'if'聲明,並在這裏顯示精確的輸出?你確定你沒有任何拼寫錯誤,你可以顯示覆制/粘貼的代碼嗎? – 2013-03-24 13:04:34

+1

Var轉儲的對象int(1362579127)和mktime int(1364130453) – 2013-03-24 13:07:28

回答

1

看着你的問題,你似乎有邏輯錯誤的方式。現在的時間總是比過去更長。請嘗試以下操作:`$ time_now`和

if($time_now>$auction->time_end){ 
//... 
} 
+1

哦,上帝。深夜編碼是最好的。 – 2013-03-24 13:15:55

0

如果您在32位系統上,則int類型的最大值定義爲20億左右。你的這兩個數字似乎都太大了。請參閱Documentation

+1

http://codepad.org/BFWIhiiu – Antony 2013-03-24 13:07:26

+4

@Sotapanna - 一個公平點,但我不認爲這是問題 - 相同的文檔聲明如果解釋器*「遇到一個超出整數類型範圍的數字,它將被解釋爲一個float。」*所以它不應該影響比較? – Emissary 2013-03-24 13:09:22

+0

@使者,真實。但是,如果沒有明確地關注它,處理如此大的數字似乎會造成問題。我建議使用BCMath庫進行此類操作。 http://php.net/manual/en/book.bc.php – stpn108 2013-03-24 13:17:38