2014-02-11 93 views
1

我正在寫一些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

這與mysql有什麼關係? –

+0

'2分鐘'將在任何時候以'1.50 - 1.99'的'$ dif'值返回。你期望有什麼不同嗎? –

+0

Gordon Linoff - 我應該提到,傳入的日期/時間格式是mysql,不確定這是多麼相關,但我認爲這可能有助於傳遞數據。 – JaanRaadik

回答

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; 
} 
+0

感謝您的回覆!然而,我仍然用這段代碼得到'2分鐘'。 – JaanRaadik