可能重复:
Output is in seconds. convert to hh:mm:ss format in php
How can i display seconds ago/minutes ago/with unix timestamp?
我正在使用这个用户在线脚本。到目前为止,它如下......
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 ['online']是用户在网站上活动的最后一次()。因此,当我从当前时间()中减去它时,它会给出我们最后一次活动的秒数。
事情就是这样的回声:
Some username was last active 567 seconds ago.
我想知道如何让它回声,所以它会将它转换为分钟和秒钟,所以它看起来像这样;
Some username was last active 9 minutes and 27 seconds ago.
如果您知道我能学到的任何地方,请提前致谢,请发布链接。 :)
答案 0 :(得分: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小时)。
答案 1 :(得分: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);
}
答案 2 :(得分:2)
基本过程与您使用的语言相同:
mins = floor (secs / 60);
secs = secs mod 60;
hour = floor (mins / 60);
mins = mins mod 60;
答案 3 :(得分:0)
$sec = $last_active % 60;
$min = ($last_active - $sec) / 60;
答案 4 :(得分:0)
你可以将分数除以60,使用模数得秒:
$minutes = $last_active / 60;
$seconds = $last_actives % 60;
答案 5 :(得分:0)
$minutes = $last_active / 60;
$seconds = $last_active % 60;
echo '<p>' . $online_user['username'].' was last active '.$minutes.' minutes and '.$seconds.' seconds ago.</p>';
你可以添加额外的if,检查分钟是否为0,不显示“分钟和”部分。