PHP倒计时输出负值

时间:2017-11-21 22:56:19

标签: php server-side countdown

我使用PHP作为服务器端语言来显示倒计时。它确实运行良好(保持服务器端倒计时的限制)但是一旦日期到期就会进入负倒计时。

例如:

<?php
date_default_timezone_set('Europe/London');
$date = strtotime("November 22, 2017 12:01 AM");
$remaining = $date - time();
$days_remaining = floor($remaining / 86400);
$hours_remaining = floor(($remaining % 86400) / 3600);
$minutes_remaining = floor(($remaining % 3600) / 60);
?>

11月22日结束后,倒计时将输出负值。在$date过期后,您可以帮助我了解如何隐藏倒计时吗?

我使用以下代码输出结果:

<?php echo $days_remaining?> : <?php echo $hours_remaining?> : <?php echo $minutes_remaining?>

2 个答案:

答案 0 :(得分:1)

使用if statement添加对$remaining值的积极性的简单检查:

date_default_timezone_set('Europe/London');
$date = strtotime("November 22, 2017 12:01 AM");
$remaining = $date - time();

if ($remaining > 0) {
    $days_remaining = floor($remaining / 86400);
    $hours_remaining = floor(($remaining % 86400) / 3600);
    $minutes_remaining = floor(($remaining % 3600) / 60);
}

在输出文件中:

<? if ($remaining > 0) { ?>
    <?= $days_remaining ?> : <?= $hours_remaining ?> : <?= $minutes_remaining ?>
<? } ?>

使用语法<?= $var ?>在PHP中输出内容更具可读性(选项short_open_tagOn中必须具有php.ini值。

答案 1 :(得分:0)

这似乎有效:

date_default_timezone_set('Europe/London');
$date = strtotime("November 21, 2017 12:01 AM");
$remaining = $date - time();

if( $remaining >= 0 )
{
    $days_remaining = floor($remaining / 86400);
    $hours_remaining = floor(($remaining % 86400) / 3600);
    $minutes_remaining = floor(($remaining % 3600) / 60);
    echo $days_remaining, ":", $hours_remaining, ":", $minutes_remaining;
}
else
    echo "Done";