Умножение времени в PHP
Мне нужно умножение времени в PHP
$maritime ='01:10:00';
Мне нужно увеличить это $maritime
до 5
Я хочу получить такой ответ
01:10:00*5 = 05:50:00
2 answers
Вот что вам следует сделать
Шаг 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);
?>
Вот ссылка Для оценки
Просто преобразуйте время в базовую единицу (в данном случае в секунды), затем умножьте его и преобразуйте обратно.
Вот краткий пример того, как это сделать, обратите внимание, что в 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";
}