舍入不正确



我正在编写一些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 分钟"。任何人都可以帮助发现我在四舍五入中犯的错误,从而导致这种情况发生?

试试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;
}

最新更新