Углеродная разница во времени между двумя датами в формате 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