データベースに保存されている2つの日付時刻文字列を取得して、それを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
最終的に、Carbonを使用して合計秒数の差を取得しました。
$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
24時間以上の差がある場合は、次を使用できます。
$start->diffInHours($end) . ':' . $start->diff($end)->format('%I:%S');
与える:
26:00:06