2015-11-06 65 views
11

我試圖找出如何我可以存儲在我們的數據庫中兩個日期時間字符串,並將其轉換爲HH的時間格式的區別: MM:SS。碳差異兩個日期之間:mm:ss格式

我看着diffForHumans,但確實給出了我想要的格式,並返回諸如after,ago等的東西;這是有用的,但不是爲了我想要做的。

持續時間絕不會跨越數日,只有一對夫婦小時最大。

$startTime = Carbon::parse($this->start_time); 
$finishTime = Carbon::parse($this->finish_time); 

$totalDuration = $finishTime->diffForHumans($startTime); 
dd($totalDuration); 

// Have: "21 seconds after" 
// Want: 00:00:21 
+0

fyi, '$ totalDuration = $ finishTime-> diffForHumans($ startTime,true); DD($ totalDuration);' 應該返回 「21世紀秒」。我知道還是不是你要找的格式,但是這是你如何刪除喜歡的東西「後」和「前」,在你的問題中引用。 – willjohnathan

回答

12

我最終抓住用碳總量秒差:

$totalDuration = $finishTime->diffInSeconds($startTime); 
// 21 

然後使用gmdate

gmdate('H:i:s', $totalDuration); 
// 00:00:21 

如果任何人有一個更好的辦法,我會感興趣。否則這個工作。

+16

我能想到的其他方式是'$ finishTime-> diff($ startTime) - >格式('%H:%i:%s');' –

+2

這些工作都不行,如果日期有不同的天數1月1日和1月5日)。 – Alex

+0

我測試過這個解決方案跨越時間(不同天)和它的作品。謝謝mtpultz。 – mcmacerson

12
$finishTime->diff($startTime)->format('%H:%I:%S'); 
// 00:00:21