PHP округляет время до ближайших 15 секунд

Это не дублирующий вопрос, но он требует небольшого понимания времени.

Мне нужно решение следующей проблемы. У меня есть несколько специально созданных времен (на основе даты), которые необходимо округлить до ближайших 15 секунд:

60 секунд - это 1 минута, что означает обычный раунд, пол, потолок с точностью до ближайшего десятичного знака (10/5), что не помогает мне со временем. также, поскольку я имею дело с секундами, может случиться так, что 59:59 будет округлено до ближайшего часа: например. 17:59:59 должно быть 18:00.

пример:

6:17:29 округляется до 6:17:30 6:29:55 округляется до 6:30:00 20:45:34 округляется до 20:45:30

Следующий код выполняет часть работы:

$hr = date('H',($resultStr));
$mn = date('i',($resultStr));
$sc = date('s',($resultStr));

$tot = ($hr * 60 * 60) + ($mn * 60) + $sc;
$totd = $tot / (60);
$totc = ceil($totd);
$totc = $totc / 60;
$hr = floor($totc);
$mn = ($totc - $hr)*60;
$mnflr = floor($mn);
$mn2 = $mn - $mnflr;
echo "$hr:$mnflr";

В результате получается: 18:35:17 округляется до: 18:36 (что неверно) 18:31:49 округляется до: 18:32 (что неверно)

Как в сторону:

$secs = date('U',($resultStr));
$round = ceil ( (($secs / 60 ) * 60 ));
$newtime = date('H:i:s',($round));

выдает: 18:42:58 округляется до: 18:42:58, что тоже неверно

Пожалуйста и заранее спасибо....


person Danny F    schedule 16.10.2014    source источник


Ответы (1)


Преобразуйте дату в секунды, используя strtotime, а затем просто работайте в секундах.

$seconds = strtotime($date);
$seconds /= 15;
$seconds = round($seconds);
$seconds *= 15;
$date = date("Y-m-d H:i:s", $seconds);
person Andy Jones    schedule 16.10.2014