2016-02-23 156 views
0

我已經創建了一個函數來顯示兩個日期之間的差異:實際和從數據庫。PHP日期 - 從返回日期的返回時間差異

我有以下代碼:

$date_a = new DateTime('now'); 
$date_b = new DateTime($Time); 

$interval = date_diff($date_b, $date_a); 

if ($interval->format('%m') >= 1) { 
    return 'Dodano: ' . $interval->format('%m') . ' miesięcy temu'; 
} elseif ($interval->format('%d') >= 1) { 
    return 'Dodano: ' . $interval->format('%d') . ' dni temu'; 
} elseif ($interval->format('%h') >= 1) { 
    return 'Dodano: ' . $interval->format('%h') . ' godz. temu'; 
} elseif ($interval->format('%i') >= 1) { 
    return 'Dodano: ' . $interval->format('%i') . ' min. temu'; 
} elseif ($interval->format('%s') >= 1) { 
    return 'Dodano: ' . $interval->format('%s') . ' sekund temu'; 
} 

月,日,小時和分鐘都OK,但秒顯示:

Dodano: 59 min. temu 

Dodano: n sekund temu 

爲什麼?

+0

你可以創建一個php小提琴嗎? http://phpfiddle.org/ –

+0

我剛剛在我的服務器上試了一下,並感到困惑,因爲我有同樣的錯誤。看到問題是你的服務器時間與你認爲的不同。這很可能是一小時提前(var_dump $ date_a,你會看到) –

+0

好的,這是我的服務器(-1小時)不好的時間,謝謝 – Vertisan

回答

0

由於您的服務器時間不是您想象的那麼您的$ date_a早了一個小時。

我在我的服務器上試過它時也感到困惑,但在var_dump-$ date_a之後,顯然這是問題所在。

希望這能爲你解決它。

-1

您需要調用DateInterval :: format()以字符串形式顯示該差異。 將以下行添加到您的代碼中。 $ interval-> format('Y-m-d H:i:s');