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){ ...
美好的一天。
我有一个显示事件开始前的时间的脚本:我的脚本如下所示:
$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){ ...