web-dev-qa-db-fra.com

Différence de carbone dans le temps entre deux dates au format hh: mm: ss

J'essaie de comprendre comment je peux prendre deux chaînes de date et d’heure stockées dans notre base de données et les convertir en un format différent du format hh: mm: ss.

J'ai regardé diffForHumans, mais cela donne le format que je voudrais et renvoie des choses comme after, ago, etc; ce qui est utile, mais pas pour ce que j'essaie de faire.

La durée ne s'étendra jamais sur plusieurs jours, mais sur un maximum de quelques heures.

$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
28
mtpultz

J'ai fini par saisir la différence de secondes en utilisant Carbon:

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

Puis utilisé gmdate:

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

Si quelqu'un a un meilleur moyen, je serais intéressé. Sinon cela fonctionne.

36
mtpultz
$finishTime->diff($startTime)->format('%H:%I:%S');
// 00:00:21
28
STWilson
$start  = new Carbon('2018-10-04 15:00:03');
$end    = new Carbon('2018-10-05 17:00:09');

Vous pouvez utiliser

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

ce qui donne la différence 24h modulo

02:00:06

Si vous voulez avoir la différence avec plus de 24h, vous pouvez utiliser:

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

qui donne :

26:00:06

13
Adam