0

我正在尝试添加一些 php,以显示我网站上产品的剩余时间,有点像拍卖。一切都显示得很好,但是当时间变短时,它显示0d 34h 12m这意味着 0 天、34 小时和 12 分钟,我想知道如果没有这样的日子,是否有办法摆脱 0d 位34h 12m,它只是让它看起来更好,当没有几个小时只剩下几分钟时也是如此。

这是计算剩余时间的代码

$date = date('m/d/Y h:i:s', time());
$date3 = new DateTime($date);
$date4 = new DateTime($time_ending);
$interval_date = $date3->diff($date4);
$time_left = $interval_date->d."d ". $interval_date->h."h ". $interval_date->i."m "; 

无论如何我可以做到这一点吗?

谢谢你的帮助

4

4 回答 4

2

是的,最短的方法是

$time_left = (($interval_date->d) ? $interval_date->d.'d ' : '')
           . (($interval_date->h) ? $interval_date->h.'h ' : '')
           . $interval_date->i.'m ';

简单解释(cond) ? (stmA) : (stmB)
等于if(cond){ stmA } else{ stmB }

于 2012-06-05T12:54:51.133 回答
1

您可以为此使用函数,请参阅:

function BetterLook($time, $sulfix)
{
    if ($time > 0)
    {
        return "$time $sulfix";
    }

    return "";
}

所以...

$time_left = BetterLook($interval_date->d, "d "). BetterLook($interval_date->h, "h "). BetterLook($interval_date->i, "m ");
于 2012-06-05T12:57:20.497 回答
0

只是写下来,没有测试。

$d = $interval_date->d;
$h = $interval_date->h;
$m = $interval_date->i; 

$time_left = ($d ? $d."d " : "") . ($d or $h ? $h."h " : "") . $i."m ";

更长,也许更容易阅读的版本:

$time_left = "";

if($d) {
    $time_left .= $d . "d ";
}

if($d or $h) {
    $time_left .= $h . "h ";
}

$time_left .= $m . "m ";
于 2012-06-05T12:52:59.743 回答
0

您是否尝试过一个简单的if语句来查看是否$interval_date->d小于 1?如果是这样,那么只需显示剩余时间。您可以在每个分段中执行此操作。这没有经过测试,只是一个建议。

于 2012-06-05T12:54:24.330 回答