php 倒计时出现-0的情况

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

 

 

posted @ 2013-03-07 09:50  myD  阅读(522)  评论(0编辑  收藏  举报