2013-04-30 122 views
0
$currentTime = date("Hi"); 

if($currentTime > 0559 && $currentTime < 1401) { 
    // Stuff here 
} 

這是我當前的代碼,但if語句似乎在午夜後的任何時間運行,而不是在0600(當地時間上午6:00)之後運行。任何想法會造成這種情況。如何解釋if/else PHP語句中的時間?

+0

如果你用'0'開始一個整數字面值,它會被解釋爲八進制。 – 2013-04-30 17:27:38

+0

但自date()返回一個字符串,你可以使用$ currentTime>'0559',它應該工作... – jcorry 2013-04-30 17:29:52

+0

有趣的是,'0559'實際上等於'45':'9'被拋出,作爲這個數字顯然不能用於十進制數字。所以,確切地說,劇本在00:45以後的任何時候都可以工作,而不是在午夜之後的任何時候。 ) – raina77ow 2013-04-30 17:30:04

回答

3

(if($currentTime > 0559) - 0559將被視爲octal,因爲之前的0

只需拆除,在比較if($currentTime > 559)

+0

太好了。謝謝!我知道這將是一件愚蠢的事情。 – 2013-04-30 17:31:36

1

確保您使用的整數。

$currentTime = intval(date("Hi")); 

if ($currentTime > 559 && $currentTime < 1401) { 
    // Stuff here 
} 
2

您正在使用的是什麼,你認爲你正在使用其他方式的整數,請integer文檔here

例如

$a = 0123; // octal number (equivalent to 83 decimal) 

讓我們回到你的代碼,修正它只是在您的整數之前刪除0,因此它不會被解釋爲octal,只需更改爲

if(($currentTime > 559) && ($currentTime < 1401)) { 
    // Stuff here 
}