Как считать секунды в минуты, php?

Возможные дубликаты:
Выходной сигнал находится в секундах. преобразовать в hh: mm: ss format в php
Как я могу показать секунда назад / минуты назад / с отметкой времени unix?

У меня есть пользовательский онлайн-скрипт, над которым я работаю. Пока это выглядит следующим образом …

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. 

Спасибо заранее, если вы знаете, где бы я ни учился, пожалуйста, напишите ссылку. 🙂

Вы можете разделить на 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 часа в день).

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

Основной процесс – это тот же язык, который вы используете:

 mins = floor (secs / 60); secs = secs mod 60; hour = floor (mins / 60); mins = mins mod 60; 
 $sec = $last_active % 60; $min = ($last_active - $sec) / 60; 

У вас могут быть минуты с делением на 60 и секундами с модулем:

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

вы можете добавить дополнительные, если проверить, нет ли минут 0, чтобы не показывать «минуты и» часть.