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

が 1 より小さいifかどうかを確認する簡単なステートメントを試しましたか? $interval_date->dその場合は、残り時間を表示します。これは各セグメントで実行できます。これはテストされていません。単なる提案です。

于 2012-06-05T12:54:24.330 に答える