Carbone Différence de Temps entre deux Dates au format hh:mm:ss
Je suis à essayer de comprendre comment je peux prendre deux dates du temps de chaînes de caractères qui sont stockées dans notre base de données et de le convertir à une différence dans l'heure au format hh:mm:ss.
J'ai regardé diffForHumans
, mais qui donne le format que je voudrais et renvoie des choses comme after
, ago
, etc; ce qui est utile, mais pas pour ce que je suis en train de faire.
La durée ne sera jamais span jours, seulement un maximum de deux 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
pour info,
$totalDuration = $finishTime->diffForHumans($startTime, true); dd($totalDuration);
Devrait revenir "21 secondes". Je sais qui n'est pas encore le format que vous cherchiez, mais c'est la façon dont vous enlever des choses comme "après" et "y", tel que mentionné dans votre question.OriginalL'auteur mtpultz | 2015-11-06
Vous devez vous connecter pour publier un commentaire.
J'ai fini par saisir le total de secondes de différence à l'aide de Carbone:
Ensuite utilisé
gmdate
:Si quelqu'un a une meilleure façon, je serais intéressé. Sinon cela fonctionne.
$finishTime->diff($startTime)->format('%H:%i:%s');
Aucun de ces travaux, si les dates des jours différents (par exemple, le 1er janvier et Jan 5e).
J'ai testé cette solution couvrant les dates (jours différents) et il fonctionne. Grâce mtpultz.
Ne fonctionne que si diffInSeconds < 86400 (24 heures). Utilisation
floor($totalDuration / 3600) . gmdate(":i:s", $totalDuration % 3600)
pour obtenir des durées > 24 heures, par exemple 72:16:12 (72 heures, 16 minutes, 12 secondes).OriginalL'auteur mtpultz
OriginalL'auteur STWilson
Vous pouvez utiliser
qui donne la différence modulo 24h
Si vous voulez avoir la différence, avec plus de 24h, vous pouvez utiliser
qui donne
OriginalL'auteur Adam