web-dev-qa-db-ja.com

hh:mm:ss形式の2つの日付間の時間の炭素差

データベースに保存されている2つの日付時刻文字列を取得して、それをhh:mm:ssの時刻形式の差に変換する方法を見つけようとしています。

私はdiffForHumansを見ましたが、それは私が望むフォーマットを与え、afteragoなどのようなものを返します。これは便利ですが、私がやろうとしていることには役立ちません。

期間は数日間に及ぶことはなく、最大数時間です。

$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

最終的に、Carbonを使用して合計秒数の差を取得しました。

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

次にgmdateを使用しました:

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

誰かがもっと良い方法を持っているなら、私は興味があります。それ以外の場合、これは機能します。

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

使用してもよい

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

これは24hを法とする差を与えます

02:00:06

24時間以上の差がある場合は、次を使用できます。

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

与える:

26:00:06

13
Adam