У меня есть переменная INTEGER(255) $duration
, сохраненная со значением, взятым у пользователя. Мне нужно округлить это UP до ближайших 15. Я искал все, но не смог найти решение.
Как я могу это сделать?
Например:
Кроме того, как я могу добавить $duration
к переменной TIME $time
, чтобы вывести время после этой продолжительности?
Например, из 080000
:
$duration
равно 15, $time
становится 081500.$duration
равно 30, $time
становится 083000$duration
равно 135, $time
становится 101500.Спасибо!
Вы также можете использовать потолок или пол вместо круглой функции. Вам нужно будет сделать немного проб и ошибок.
Вы можете использовать простое деление и сложение с оператором приведения (вернет целое значение без дроби) следующим образом:
$val = 130;//or any value
$roundedVal = ((int)($val/15) + 1) * 15;
по второму вопросу:
$time='080000';
$valHours = (int)($val/60);
$valMin = (int)($val % 60);
$time = $time + ($valHours * 10000) + ($valMin * 100);
$time = strlen($time) == 8? $time : '0' . $time;
последняя строка предназначена для фиксации начального нуля, поскольку это не обычный формат времени. Я не учитывал секунды.
Вы можете попробовать эту логику для длительности ((round($duration/15)*15) + 15).