PHP:round()函数发生了什么?

时间:2015-07-02 10:42:39

标签: php rounding

我从数据库中得到一个时间(存储为整数):

$time = $data["USER_TIME"];

然后我会做以下事情:

$hours = round(($time / 3600), 0);
$minutes = round((($time - ($hours * 3600)) / 60), 0);
$seconds = $time - ($hours * 3600) - ($minutes * 60);

我在之后创建了一个时间字符串:

$timeString = formatNumber($hours).":".formatNumber($minutes).":".formatNumber($seconds);

function formatNumber($number) {
    if($number < 10) {
        return ("0".$number);
    } else {
        return ("".$number);    
    }
}

但结果令我感到困惑:

10 seconds -> 00:00:10
15 seconds -> 00:00:15
20 seconds -> 00:00:20
25 seconds -> 00:00:25
30 seconds -> 00:01:-30
35 seconds -> 00:01:-25
40 seconds -> 00:01:-20
45 seconds -> 00:01:-15
50 seconds -> 00:01:-10

有人可以解释一下这里发生了什么吗?

Var_dump $ data [“USER_TIME”]:

10 
15
20 
25
30
35
40
45
50

2 个答案:

答案 0 :(得分:1)

让我们试试floor。您现在正在使用round,这意味着等于或大于.5的所有内容将成为下一个整数。

$hours = floor($time / 3600);
$minutes = floor(($time - ($hours * 3600)) / 60);
$seconds = $time - ($hours * 3600) - ($minutes * 60);

答案 1 :(得分:1)

您可以使用gmdate()功能,而不是floor()round()

echo gmdate("H:i:s", 685);