Углеродная разница во времени между двумя датами в формате hh: mm: ss

Я пытаюсь выяснить, как я могу взять две строки времени, которые хранятся в нашей базе данных, и преобразовать их в разницу во времени формата 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

Ответ 1

Я закончил тем, что захватил общую разницу секунд с помощью Carbon:

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

Затем используется gmdate:

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

Если у кого-то есть лучший способ, мне было бы интересно. В противном случае это работает.

Ответ 2

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