2012-10-21 72 views
5

我怎樣才能得到這個輸出以HH:MM格式獲得時間差異php

HH:MM格式?

$to_time = strtotime("2008-12-13 10:42:00"); <--AM 
$from_time = strtotime("2008-12-14 8:21:00"); <-- PM 
$stat = round(abs($to_time - $from_time)/60,2). "min"; 

我從這個得到的是1299分鐘

但我無法弄清楚如何使它輸出

21H:41米

回答

8

首先,8:21:00將被解釋爲上午8點,除非你使用DateTime::createFromFormat()指定。

制定出時間差,用DateTime::diff()

$to = new DateTime("2008-12-13 10:42:00"); 
$from = new DateTime("2008-12-14 8:21:00"); 

$stat = $to->diff($from); // DateInterval object 

echo $stat->format('%Hh:%Im'); 

這將顯示兩個時間之間的小時/分鐘的差別,但只到24小時。

如果需要超過24小時,你應該做到以下幾點:

$hours = $stat->days * 24 + $stat->h; 
$minutes = $stat->i; 

printf('%02sh:%sm', $hours, $minutes); 
+0

這一次也不會返回正確的值時,有日期 –

+0

之間超過24小時的$統計對象的實例[DateInterval ](http://au.php.net/DateInterval),查看如何提取日/月/年的文檔。 – Alex

+0

所以,請刪除/編輯'format'行,因爲它不包含有關日期的任何信息併產生誤導性結果。 –

2

所有你需要包括AM和PM在你的日期字符串的第一,否則2008-12-14 8:21:00將被解釋爲8:21 AM

現在兩個日期之間的差異是2019即33小時:19米,你不能使用標準日期格式,因爲它們只支持24小時制。你應該保持$stat爲整數,並與sprintf像顯示它是這樣的:

echo sprintf('%02dh:%02dm', $stat/60, $stat%60);