Как рассчитать время в формате ЧЧ: мм: сс из массива - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь вычислить время из массива, где время хранится в формате ЧЧ: мм: сс, я делаю массив времени из этого кода,

$result=[];
foreach ($playerTimes as $playerTime) {
    $playerStartTime = (isset($playerTime->start_time))? $playerTime->start_time: '00:00:00';
    $playerEndTime = (isset($playerTime->End_time))? $playerTime->End_time: '00:00:00';
    $result[] = \Carbon\Carbon::parse($playerStartTime)->diff(\Carbon\Carbon::parse($playerEndTime))->format('%H:%I:%S');

                          }

, и я получаю этот массив

array:3 [0 => "08:44:14" 1 => "10:46:16" 2 => "12:48:18"]

результат, который я пытаюсь достичь после добавления: 32:18:48

Я пробовал это, однако результат, который я получил, - 08:18:48, что не то, что мне нужно,

$result[] = \Carbon\Carbon::parse($playerStartTime)->diffInSeconds(\Carbon\Carbon::parse($playerEndTime));
dd(gmdate("H:i:s", array_sum($result)));

1 Ответ

1 голос
/ 27 апреля 2020

Проблема, с которой вы сталкиваетесь, заключается в том, что формат H:i:s просто не поддерживает то, чего вы пытаетесь достичь, поскольку H никогда не может быть больше 23 или меньше 0.

Есть два возможных решения: вы можете использовать Y-m-d H:i:s, чтобы показать разницу в годах, месяцах и днях, или вы можете использовать эти значения, чтобы преобразовать их обратно в часы, или рассчитать часы из разницы секунд (таким образом, разница в секундах) / 60/60 = часы), и работа оттуда.

...