Я написал функцию, позволяющую округлять метки времени до секунд или минут.
Возможно, я не самый эффективный способ, но я думаю, что PHP не заботится о нескольких простых циклах.
В вашем случае вы просто передаете дату и время MySQL следующим образом:
<?php echo date('d/m/Y - H:i:s', roundTime(strtotime($MysqlDateTime), 'i', 15)); ?>
Возвращает: округленное значение закрытия (смотрит как вверх, так и вниз!)
Функция:
<?php
function roundTime($time, $entity = 'i', $value = 15){
// prevent big loops
if(strpos('is', $entity) === false){
return $time;
}
// up down counters
$loopsUp = $loopsDown = 0;
// loop up
$loop = $time;
while(date($entity, $loop) % $value != 0){
$loopsUp++;
$loop++;
}
$return = $loop;
// loop down
$loop = $time;
while(date($entity, $loop) % $value != 0){
$loopsDown++;
$loop--;
if($loopsDown > $loopsUp){
$loop = $return;
break;
}
}
$return = $loop;
// round seconds down
if($entity == 'i' && date('s', $return) != 0){
while(intval(date('s', $return)) != 0){
$return--;
}
}
return $return;
}
?>
Вы просто заменяете $ entity на 's', если хотите округлить в большую или меньшую сторону до секунд, а 15 - на количество секунд или минут, которое хотите увеличить или уменьшить.