2012-11-28 22 views
2

我正在實現一個應用程序,其中我必須顯示從結束日期到開始日期的總小時數中的時間差。假設我在timestamp.so中都有開始日期和結束日期,我將如何在總小時內得到日期的差異? 現在我使用下面的代碼PHP時間戳總共剩餘小時數不同

$intervalo = date_diff(date_create(), date_create($end)); 
    pr($intervalo); 

並且輸出是等

DateInterval Object 
(
    [y] => 0 
    [m] => 1 
    [d] => 4 
    [h] => 18 
    [i] => 41 
    [s] => 2 
    [invert] => 0 
    [days] => 34 
) 

上面的代碼告訴我的總小時baut結束日期是大於1個月它顯示1M的陣列。但我只希望總小時數只有 可以幫我嗎? 在此先感謝

回答

5

請勿使用date_diff。將日期轉換爲時間戳(表示秒),將兩者相減,然後除以3600

$x = date_create(); 
$y = date_create($end) 
$hours = ($y->getTimestamp() - $x->getTimestamp())/3600; 

如果你想要小時,分鐘和秒:

$x = date_create(); 
$y = date_create($end) 
$diff = ($y->getTimestamp() - $x->getTimestamp()); 

$seconds = $diff % 60; 
$diff = (int)($diff/60); 
$minutes = $diff % 60; 
$diff = (int)($diff/60); 
$hours = $diff; 
+1

這是真實的,你需要在「時鐘時間」的區別任何情況下(即小時,分鐘或秒) - - 就像這個問題一樣。但是,如果您需要日曆時間(即日,月,或年),您應*使用'date_diff'以避免被夏時制和閏年等違規行爲所拋棄。 – Lee

+0

感謝亞歷克斯查倫..它的工作很好..我想剩下的時間(日期分鐘小時)格式..我有總小時,所以我將如何獲得該格式的數據 –

+0

@deckjohn:而不是把它放在評論中,我已經更新了包含H:M:S的答案。 – Undeterminant