两个日期之间的碳差以hh:mm:ss格式表示

时间:2015-11-06 20:31:20

标签: date laravel laravel-5.1 php-carbon

我试图找出如何获取存储在我们数据库中的两个日期时间字符串,并将其转换为hh:mm:ss的时间格式差异。

我查看了diffForHumans,但确实提供了我喜欢的格式并返回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

3 个答案:

答案 0 :(得分:30)

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

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

然后使用gmdate

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

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

答案 1 :(得分:24)

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

答案 2 :(得分:9)

$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