Мне нужно умножить время в PHP
$maritime ='01:10:00';
Мне нужно увеличить этот $maritime
до 5
Я хочу получить такой ответ
01:10:00*5 = 05:50:00
Вот что вы должны сделать
Шаг 1: Преобразование часов в секунды
$seconds = strtotime("1970-01-01 $maritime UTC");
Шаг 2: Умножьте его прямо
$multiply = $seconds * 5;
Шаг 3: Преобразуйте секунды в часы, и все готово!
echo gmdate("d H:i:s",$multiply);
Итак, ваш окончательный код должен быть
<?php $maritime ='01:10:00'; $seconds = strtotime("1970-01-01 $maritime UTC"); $multiply = $seconds * 5; #Here you can multiply with your dynamic value echo gmdate("d H:i:s",$multiply);
Вот ссылка Eval, которая показывает результат
Обновить :
Если вы работаете более одного дня
т.е. время * 25 раз, то у него будет более одного дня
Тогда мой выход будет 02 05:10:00
Но если вы хотите, чтобы это в часы строго, вы должны использовать DateTime
<?php $maritime ='01:10:00'; $seconds = strtotime("1970-01-01 $maritime UTC"); $multiply = $seconds * 25; #Here you can multiply with your dynamic value $seconds = $multiply; $zero = new DateTime("@0"); $offset = new DateTime("@$seconds"); $diff = $zero->diff($offset); echo sprintf("%02d:%02d:%02d", $diff->days * 24 + $diff->h, $diff->i, $diff->s); ?>
Вот ссылка Eval
Просто преобразуйте время в базовый блок (в этом случае секунды), затем умножьте его и преобразуйте обратно.
Ниже приведен краткий пример того, как это сделать, обратите внимание, что в toSeconds
отсутствует проверка toSeconds
и вы, вероятно, захотите обработать 00 в fromSeconds
.
function toSeconds($time){ $arr = explode(":", $time); return $arr[0]*3600 + $arr[1]*60 + $arr[2]; } function fromSeconds($seconds){ $hours = floor($seconds/3600); $seconds -= $hours*3600; $minutes = floor($seconds/60); $seconds -= $minutes*60; return "$hours:$minutes:$seconds"; }