#php #laravel #php-carbon
#php #laravel #php-углерод
Вопрос:
У меня есть приложение, которое считает часы из нескольких записей. Теперь я обнаруживаю ситуацию, если часы возвращают мне более 2 цифр.
Например, у меня есть $total = '102:00:00'
с 3 цифрами, он возвращает мне эти ошибки:
A two digit minute could not be found
Ошибка возникает, когда я пытаюсь сделать это: Carbon::createFromFormat('H:i:s', $total);
Как я могу это решить?
Спасибо
Комментарии:
1. Вы хотите создать дату или продолжительность?
2. Итог выглядит как измерение продолжительности времени, а не как дата. Вы ожидаете измерения продолжительности времени или даты?
3. Мне нужна временная метка из этих часов @DelenaMalan
4. Какую временную метку вы ожидаете от 102 часов?
5. Что мне нужно, так это суммировать 102:00:00 часов с 05:00:00 и вернуть это значение. До сих пор то, что я делаю, это createFromFormat каждого часа, суммируя как timestamp, так и createFromTimestamp с этим значением. возможно, я усложняю @DelenaMalan
Ответ №1:
Я думаю, вам не следует путать фактическую дату (время) и временной интервал. Функция, ориентированная на дату и время, вам не поможет. Просто создайте свою собственную функцию для добавления двух длительностей. Смотрите (псевдо-) код ниже
function add_duration($h1,$m1,$s1,$h2,$m2,$s2)
{
$s3 = ($s1 $s2)%60;
$m3 = ($m1 $m2 floor(($s1 $s2)/60))%60;
$h3 = $h1 $h2 floor(($m1 $m2 floor(($s1 $s2)/60))/60);
return [$h3,m3,s3];
}
Ответ №2:
Вот мое предположение:
$time1 = '05:00:00';
$time2 = '120:00:00';
$components1 = explode(':', $time1);
$components2 = explode(':', $time2);
$diff = ($components2[0] * 3600 $components2[1] * 60 $components2[2]) - ($components1[0] * 3600 $components1[1] * 60 $components1[2]);
$total = floor($diff / 3600) . gmdate(":i:s", $diff % 3600);