我试图找出如何获取存储在我们数据库中的两个日期时间字符串,并将其转换为时间格式hh: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
我最终使用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