2015-10-01 161 views
1

我正在開發一個php模塊,我應該管理時間差異並在特定的時間差中繼續。 我正在從數據庫($ end_date)獲取包含時間的值。在IF語句中比較時間PHP

$end_date = $result['end_date']; 

正從

$date = $this->GetServerTime(); 

服務器時間,現在得到這兩個

$diffrence = date("Y-m-d H:i:s",strtotime("$date - $end_date")); 

之間的時間差,我需要檢查,如果時間差通過,如果小於15秒聲明。我的方法:

$to_time = strtotime("0000-00-00 00:00:15"); 
      if ($difference < $to_time) 
      { 
      echo "here"; 

      } 

但我相信我沒有做正確的事情,我該怎麼比較呢? 我已經做了大量的研究,但無濟於事,任何幫助表示讚賞。要做到這一點

+0

嗯,首先你的'$ difference'變量看起來像'2015-10-01',而你的'$ to_time'變量看起來像一個字符串這個'144112331'因此比較他們是不行的。 – Epodax

+0

有什麼建議嗎? –

+0

Epodax是對的。這根本不起作用。這個怎麼樣:據我所知'strtotime'在幾秒鐘內返回時間戳。不會簡單地將服務器日期($ date)和提取日期($ end_date)轉換爲時間戳,然後只是將它們相減會給你秒差異? –

回答

1

發現每當我有做類似的事情,我只是時間戳(這是秒)計算。

$end_date = strtotime($result['end_date']); # timestamp in s 
$date  = strtotime($this->GetServerTime()); # timestamp in s 

if ($date - $enddate > 15) { 
    echo "Here"; 
} 

對於分鐘和小時,你可以用60

if ($date - $enddate > (15*60)) { # 15 minutes 
    echo "Here"; 
} 

容易繁殖這些時候,我不能完全肯定這將夏令時工作,但它應該足以滿足大多數使用情況。

哦,順便說一句:如果您必須與當前時間進行比較,那麼time()會以秒爲單位返回時間戳,這非常有用。

3

一種方法可以使用這樣的事情

$to_time = strtotime("2008-12-13 10:42:00"); 
$from_time = strtotime("2008-12-13 10:21:00"); 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

對於那些誰使用不同的日期/時間格式比上面,可以使用類似於下面的代碼,你可以使用date()功能的參數來指定你的日期格式。

$dateFormat = "d/m/Y H:i:s"; 
$tmp_to_time = date_create_from_format($dateFormat,"25/08/2015 10:45:12"); 
$tmp_from_time = date_create_from_format($dateFormat,"25/08/2015 10:34:15"); 

$to_time = strtotime(date_format($tmp_to_time , $dateFormat)) 
$from_time = strtotime(date_format($tmp_from_time , $dateFormat)) 
$difference = $to_time - $from_time; 

if($difference > 15){ 
    <CODE> 
} 

靈感和代碼的主要部分來自here

+0

不需要四捨五入。 –

+0

更正@SalmanA - 感謝您的領導:) – Epodax

0

這是怎麼可以這樣做:

$end_date = strtotime($result['end_date']); 
$date  = strtotime($this->GetServerTime()); 
$difference = $date-$end_date; 
$sec = strtotime(15); 
if ($difference < $sec){ 
    echo "here"; 
}