2016-11-22 143 views
1

當時間大於24小時時,計算時間差異的最佳方法是什麼?時間大於24小時之間的PHP計算差值

$time1 = '76:00:00'; 
$time2 = '30:00:00'; 

// result should be 46:00:00 
echo date('H:i:s', strtotime($time1) - strtotime($time2)); 

但是,這不能用這個做,因爲它大於24小時。

而且在數據庫中我已經保存時間是這樣的:33:30:00 我在PHP怎麼能格式化它:33:30

+0

你爲什麼要存儲這樣的時間? – bassxzero

+0

如果你使用正常的時間戳它很容易計算差異 – Bolli

+0

我認爲你需要做手動計算。 –

回答

0

使用\DateTime\DateInterval進行計算:

$date1 = new \DateTime('now', new DateTimeZone('UTC')); 
$date2 = new \DateTime('now', new DateTimeZone('UTC')); 
$time1 = new \DateInterval('PT76H'); 
$time2 = new \DateInterval('PT30H'); 

$date1->add($time1); 
$date2->add($time2); 

$diff = $date1->diff($date2); 
echo ($diff->days * 24 + $diff->h) . $diff->format(':%I:%S'); 

說明: 無法直接在DateInterval上執行計算,因此您必須創建日期作爲計算的基礎。然後爲當前日期添加兩個不同的時間間隔,並計算它們之間的差異。 diff()返回\DateInterval,其中包含總天數,您必須乘以24才能獲得小時數,以及不能使整天數的小時數。

編輯:時區應指定爲UTC以避免夏令時問題。

+0

什麼是值:'PT76H'和'PT30H' – Bham

+0

這些是時間間隔定義。看到這裏的例子:http://php.net/manual/en/dateinterval.construct.php –

+0

當一次比另一次更大時,是否有可能顯示負值? – Bham