php倒數計時出現-0的情況

myDCool發表於2013-03-07

2013年3月7日 09:31:30

今天有反饋,說倒數計時出現了-0天的情況,我看了看程式,臥槽,當時怎麼沒測試到

原因是PHP的邏輯判斷中 -0 > 0

貼出錯的程式碼

$starttime     = 1362585600; //3.7凌晨
$nowtime     = 1362618921;//3.7早上

$off = ceil(($starttime - $nowtime)/86400); //倒數計時

if ($off < 0) {
    $off = 0;
}

$b = $starttime - $nowtime;
$c = $b/86400;
$d = ceil($c);

var_dump(array(`start-now`=>$b), array(`float_day`=>$c), array(`int_day`=>$d), array(`off`=>$off));

if (-0 < 0) {
    echo `-0 < 0`;
} else {
    echo `-0 > 0`;
}

輸出

array
  `start-now` => int -33321

array
  `float_day` => float -0.385659722222

array
  `int_day` => float -0

array
  `off` => float -0

-0 > 0

過程:
當開始時間和當前時間是同一天時,上邊的計算過程由於 -0 > 0 所以會出現 off = -0 的情況

改進:

$starttime     = 1362585600; //3.7凌晨
$nowtime     = 1362618921;//3.7早上

if (($starttime - $nowtime) < 0) {
    $off = 0;
} else {
    $off = ceil(($starttime - $nowtime)/86400);
}

 

 


相關文章