美好的一天。
我有一个脚本显示事件开始之前的时间:我的脚本如下所示:
$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';
}
我的脚本运行完美,事实上它的工作非常好,即使事件已经过期,它也会继续计算:
我的问题
知道它为什么这样做吗?我停止这种行为的判断对我来说是好事......?
答案 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){ ...