PHP停止显示负面时间

时间:2015-06-23 07:40:39

标签: php ajax datetime time

美好的一天。

我有一个脚本显示事件开始之前的时间:我的脚本如下所示:

$gameDate = $row['event_date'];

if($gameDate !== $lastDate){
    $calcDate = $gameDate.$time;
    $calcDate = strtotime(str_replace('/', '-', $gameDate));        
    $remaining = $calcDate - time();
    $days_remaining = floor($remaining / 86400);
    $hours_remaining = floor(($remaining % 86400) / 3600);

if($days_remaining < 0 && $hours_remaining < 0){
    echo''; 
}

if($days_remaining == 0){
    echo 'Starts In: <span class="timeSpan">'.$hours_remaining.'</span> Hours';
}
else if($days_remaining != 0){
    echo' Starts In: <span class="timeSpan">'.$days_remaining.'</span> Days And <span class="timeSpan">'.$hours_remaining.'</span>Hours';       
}

我的脚本运行完美,事实上它的工作非常好,即使事件已经过期,它也会继续计算:

我的问题

enter image description here

知道它为什么这样做吗?我停止这种行为的判断对我来说是好事......?

3 个答案:

答案 0 :(得分:1)

假设即使事件已经开始并且您也不想显示负数小时,您也需要将条件更改为OR

为了避免代码的其余部分执行并显示负数,您需要将其放在else块中:

if($days_remaining<0 || $hours_remaining<0) {
                     ^^ use OR
  // Event has already started
  echo ''; 
} else {
  // the rest of your code in the `else` block
}

答案 1 :(得分:1)

我不确定第一个if语句的结束括号的位置,但对于最后两个,它应该是:

if ($days_remaining == 0 && $hours_remaining >= 0) {
    echo 'Starts In: <span class="timeSpan">'.$hours_remaining.'</span> Hours';
}
else if ($days_remaining > 0) {
    echo 'Starts In: <span class="timeSpan">'.$days_remaining.'</span> Days And <span class="timeSpan">'.$hours_remaining.'</span>Hours';       
}

答案 2 :(得分:1)

在我看来,您的代码中有两个错误。首先是检查日和小时是否小于0.我认为它应该是

if ($days_remaining<=0 && $hours_remaining<0){ ...

第二个错误是:

else if ($days_remaining != 0){ ...

即使$days_remaining为-2,此检查也会为真,因为-2 != 0。所以,最后一次检查应该是:

else if ($days_remaining > 0){ ...