舍入不正确

时间:2014-02-11 03:53:29

标签: php rounding

我正在编写一些PHP代码,用于根据存储在mysql表中的时间显示“1分钟”,“2分钟”,“3小时”等时间,并与当前时间进行比较。我目前的代码如下:

    $dif = (strtotime("-0 minutes") - strtotime($time))/60;
    if($dif < 1){
        return "Just Now";
    }elseif($dif < 2){
        return round($dif, 0, PHP_ROUND_HALF_DOWN) . " Min";
    }elseif($dif < 60){
        return round($dif, 0, PHP_ROUND_HALF_DOWN) . " Mins";
    }elseif($dif/60 < 2){
        return round($dif/60, 0, PHP_ROUND_HALF_DOWN) . " Hour";
    }elseif($dif/60 < 24){
        return round($dif/60, 0, PHP_ROUND_HALF_DOWN) . " Hours";
    }elseif($dif/1440 < 2){
        return round($dif/1440, 0, PHP_ROUND_HALF_DOWN) . " Day";
    }elseif($dif/1440 < 4){
        return round($dif/1440, 0, PHP_ROUND_HALF_DOWN) . " Days";
    }else{
        $datepieces = explode(" ", $time);
        $date = date("j F, Y", strtotime($datepieces[0]));
        return $date;
    }

然而,我的问题是,当定时器从“1分钟”切换到“2分钟”时,持续约30秒的时间,将返回“2分钟”。任何人都可以帮助发现我在舍入中犯的错误会导致这种情况发生吗?

1 个答案:

答案 0 :(得分:0)

请尝试floor

$dif = (strtotime("-0 minutes") - strtotime($time))/60;
if($dif < 1){
    return "Just Now";
}elseif($dif < 2){
    return floor($dif) . " Min";
}elseif($dif < 60){
    return floor($dif) . " Mins";
}elseif($dif/60 < 2){
    return floor($dif/60) . " Hour";
}elseif($dif/60 < 24){
    return floor($dif/60) . " Hours";
}elseif($dif/1440 < 2){
    return floor($dif/1440) . " Day";
}elseif($dif/1440 < 4){
    return floor($dif/1440) . " Days";
}else{
    $datepieces = explode(" ", $time);
    $date = date("j F, Y", strtotime($datepieces[0]));
    return $date;
}