hh:mm:ss 格式的两个日期之间的碳时间差异

Carbon Difference in Time between two Dates in hh:mm:ss format

我想弄清楚如何获取存储在我们数据库中的两个日期时间字符串并将其转换为 hh:mm:ss.

的时间格式差异

我查看了 diffForHumans,但确实给出了我想要的格式和 returns 诸如 afterago 等的格式;这很有用,但对我正在尝试做的事情没有帮助。

持续时间永远不会跨越几天,最多只有几个小时。

$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

我最终使用 Carbon 获取了总秒数差异:

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

然后用了gmdate:

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

如果有人有更好的方法,我会很感兴趣。否则这有效。

$finishTime->diff($startTime)->format('%H:%I:%S');
// 00:00:21
$start  = new Carbon('2018-10-04 15:00:03');
$end    = new Carbon('2018-10-05 17:00:09');

您可以使用

$start->diff($end)->format('%H:%I:%S');

给出差模 24h

02:00:06

如果你想要超过24小时的差异,你可以使用:

$start->diffInHours($end) . ':' . $start->diff($end)->format('%I:%S');

给出:

26:00:06