PHP 停止显示负时间

PHP stop negative time being displayed

美好的一天。

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

$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';       
}

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

我的问题

知道它为什么这样做吗?我停止这种行为的 if 语句对我来说看起来不错...?

假设即使活动已经开始并且您也不想显示负时数,您需要将条件更改为 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
}

我不确定第一个 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';       
}

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

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

第二个错误是:

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

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

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