2012-06-05 53 views
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 "; 

有反正我能做到這一點?

感謝您的任何幫助

回答

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 }

+0

確定這件作品很好,而且當天沒有出現,但是我所測試的所有物品還剩下幾小時,當它達到40分鐘時,它是否也會停止顯示時間?感謝您的幫助 – Arken

+0

冷靜:)你也可以做同樣的時間,看到編輯上面的代碼;) – Havelock

+0

好吧,我認爲這將工作,謝謝你的所有幫助 – Arken

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 "; 
0

您是否嘗試過一個簡單的if聲明,看看是否$interval_date->d小於1?如果是這樣,只顯示剩餘的時間。你可以做到這一點每個細分。這沒有經過測試,只是一個建議。

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 ");