Разница во времени между двумя датами в формате чч: мм:СС

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

3 ответов


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

$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

Если вы хотите иметь разницу с более чем 24h вы можете использовать

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

что дает

26:00:06