2011-08-28 40 views
0

可能重複:
Output is in seconds. convert to hh:mm:ss format in php
How can i display seconds ago/minutes ago/with unix timestamp?如何將秒數轉換爲分鐘,php?

我有這樣的用戶在線腳本我的工作。到目前爲止,這是如下...

while ($online_user = $q -> fetch(PDO::FETCH_ASSOC)) { 

$last_active = time() - $online_user['online']; 
echo '<p>' . $online_user['username'] . ' was last active ' . $last_active . ' seconds 
    ago.</p>'; 

} 

$ online_user [「在線」]是最後一次()的用戶是活躍在網站上。所以當我從當前時間減去它()後,它給了我上一次活動的秒數。

事情是在一分鐘之回聲是這樣的:

Some username was last active 567 seconds ago. 

我想知道我怎麼可以把它呼應所以它會代替其轉換爲分鐘和秒所以它會是這個樣子;

Some username was last active 9 minutes and 27 seconds ago. 

在此先感謝,如果你知道的任何地方我可以學習這個,請張貼鏈接。 :)

+0

查找到PHP的'日期()'' –

+0

日期()'是不是當它涉及到的時間差非常可靠的。如果差異超過24小時,則不起作用,或者如果差異超過一小時,則不起作用。 – JJJ

回答

6

可以除以60得到的分鐘數。除法餘數是不是一分鐘內的秒數。

$minutes = floor($last_active/60); 
$seconds = $last_active % 60; 
echo 'Some username was last active '; 

if ($minutes > 0) { 
    echo "$minutes minutes "; 
} 

if ($seconds > 0) { 
    if ($minutes > 0) { 
     echo "and "; 
    } 
    echo "$seconds seconds "; 
} 
echo "ago."; 

這會分解成分鐘和秒,而不會輸出幾分鐘或幾秒鐘如果任爲零(即沒有「0分30秒前」。請注意,如果你想添加小時(X小時,Y分鐘,Z秒),您可以採用相同的方法,再次除以60(每小時60分鐘,每分鐘60秒)。要獲得'天',您將除以24(24小時每天)。

+0

您需要使用地板而不是圓形。 –

0
$sec = $last_active % 60; 
$min = ($last_active - $sec)/60; 
5
function sec_to_time($seconds) { 
    $hours = floor($seconds/3600); 
    $minutes = floor($seconds % 3600/60); 
    $seconds = $seconds % 60; 

    return sprintf("%d:%02d:%02d", $hours, $minutes, $seconds); 
} 
+0

如果秒數爲0,則只能輸出分鐘:) –

+0

我不明白你的意思。 – Trefex

+0

他想表示10分19秒。如果你只有10分鐘(和0秒),它只會輸出10分鐘。 –

0

您可以通過60,用分裂分鐘,秒模:

$minutes = $last_active/60; 
$seconds = $last_actives % 60; 
0
$minutes = $last_active/60; 
$seconds = $last_active % 60; 
echo '<p>' . $online_user['username'].' was last active '.$minutes.' minutes and '.$seconds.' seconds ago.</p>'; 

你可以添加額外的,如果檢查分鐘0不顯示「分」的部分。

2

的基本過程是一樣的,你使用任何語言:

mins = floor (secs/60); 
secs = secs mod 60; 

hour = floor (mins/60); 
mins = mins mod 60; 
相關問題