将格式化的时间值舍入到最近的半小时

时间:2011-05-25 16:48:28

标签: php rounding

我需要0:30到0:59才能向下舍入到0:30 我需要0:00到0:29来整理到0:30。

示例:08:56将向下舍入到08:30,其中09:00和09:01将需要向上舍入到09:30。 秒数应省略或舍入为:00

3 个答案:

答案 0 :(得分:13)

你为什么不这样做:

$hour = date('H');
$minute = (date('i')>30)?'30':'00';
echo "$hour:$minute";

DEMO

<强>更新
我刚刚意识到你要求所有时间四舍五入到:30

$hour = date('H');
$minute = '30'; //always 30
echo "$hour:$minute";

答案 1 :(得分:2)

you have to do: 

$hour = date('H'); 
$minute = date('i');
$minute = ($minute < 30 || $minute > 30) ? 30 : $minute;

答案 2 :(得分:2)

我的解决方案是下一个选项:

//Round Down
date('H:i',floor(time() / (15 * 60)) * (15 * 60))

//Round Up/Down
date('H:i',round(time() / (15 * 60)) * (15 * 60))

//Round Up
date('H:i',ceil(time() / (15 * 60)) * (15 * 60))

time()替换为您需要的时间,将15替换为您希望近距离的分钟数。

示例:

$currentTime = time();
echo('Current Time: ' . date('H:i',$currentTime) . '<br>Rounded Up 15 Minutes time: ' . date('H:i',ceil($currentTime / (15 * 60)) * (15 * 60)));