2017-06-07 86 views
2

我希望PHP檢查它是否是上午8:30,如果是,我希望它改變一個變量。 我試過了,如何在PHP中將當前時間與預設時間進行比較?

$eightthirtyam = "08:30:00"; 
if(time() >= strtotime($eightthirtyam)){ 
    $refresh = true; 
} 

但布爾不會改變。任何想法我做錯了什麼?

+4

if(date(「H:i」)==「08:30」)... – Ashraf

+2

邏輯似乎沒有任何錯誤。通過'var_dump(time());'和'var_dump(strtotime($ eightthirtyam))檢查''看看爲什麼你的邏輯失敗。這是因爲時區 –

回答

2

strtotime取決於時區..所以你應該定義時區。 您應該在比較之前設置默認時區。

http://php.net/strtotime

例子:

date_default_timezone_set('America/Los_Angeles'); 

$eightthirtyam = "08:30:00"; 
if(time() >= strtotime($eightthirtyam)){ 
    $refresh = true; 
} 

http://codepad.org/GC0VA7nw

+0

是不是從服務器時區自動識別的默認時區?我是否必須手動設置? –

+1

不,它不會像那樣工作。函數time()總是返回與時區無關的時間戳(= UTC)(請參閱http://php.net/manual/en/function.time.php#100220)。 ... strtotime - 將任何英文文本日期時間描述解析爲Unix時間戳....因此,您應該在代碼本身中設置默認時區 – NID

+0

上面的代碼適合您嗎? – NID

-1

該代碼是好的,直到我知道。但如果你想做一些動作,你可以做這樣的事情。

  $refresh=false; 
     $eightthirtyam = "08:30:00"; 
     if(time() >= strtotime($eightthirtyam)) 
     { 
      $refresh = true; 
     } 
     if($refresh) 
     { 
      //your statement is true do something here 
     } 
     else 
     { 
      //false statement 
     } 
1

功能time()總是返回時間戳是時區獨立(= UTC),而strtotime()給當地的時間,因此,有一個時區偏移。

在比較之前,您需要從當地時間減去時區偏移量,並檢查live demo以獲得很好的理解。

+0

downvote的原因將不勝感激。謝謝。 –

2

在php中我們有new DateTime函數。所以,你可以用它來匹配您的日期給例如

$refresh = false; 
$eightthirtyam = "08:30:00"; 
$date = new DateTime(); 
if($date->format('H:i:s') == $eightthirtyam) 
{ 
    $refresh = true; 
} 

這裏下面是一個例子

$refresh = "false"; 
$eightthirtyam = "08:30:00"; 
$date = new DateTime("2017-06-07 8:30:00"); // suppose your system current time is this. 
if($date->format('H:i:s') == $eightthirtyam) 
{ 
    $refresh = "true"; 
} 
echo $refresh; 

您可以通過在線PHP編輯http://www.writephponline.com/

執行試試上面的例子檢查答案,我認爲這可能會對你有所幫助。

+0

我試過這個,但它仍然不起作用。如果($ date-> format('H:i:s')> = $ eightthirtyam) 或者其他時間必須完全是8:30:00才能測試,但是它仍然不會'運行。 –

+0

@DaveHowson只是檢查和工作正常.. FYI:'新日期時間();'系統的當前日期時間。如果你當前的系統日期時間不是8:30,那麼這會給你$ refresh作爲錯誤的答案。我正在用示例更新我的答案。你可以再次檢查我的答案。 –

0

這將幫助你:

date_default_timezone_set('Asia/Kolkata'); 
$eightthirtyam = "08:30:00"; 
$refresh = false; 
if(strtotime(date('H:i:s') == strtotime($eightthirtyam)){ 
    $refresh = true; 
} 

參考: -/strtotime

1
$hr= date('H:i'); 

    if(strtotime($hr)==strtotime(08:30) ){ 
    $refresh = true; 
    } 

請試試這個方法。它會在你的情況下工作。

相關問題