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
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.
$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');
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