Для того, чтобы форматировать время в секундах в вид, который удобен и понятен для восприятия, можно воспользоваться следующим методом.
public function secondsToHumanTime($seconds)
{
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
$days = $dtF->diff($dtT)->format('%a');
$hours = $dtF->diff($dtT)->format('%h');
$minuts = $dtF->diff($dtT)->format('%i');
$seconds = $dtF->diff($dtT)->format('%s');
$res = '';
if($days > 0){
$res .= $this->pluralForm($days, ['день', 'дня', 'дней']).' ';
}
if($hours > 0){
$res .= $this->pluralForm($hours, ['час', 'часа', 'часов']).' ';
}
if($minuts > 0){
$res .= $this->pluralForm($minuts, ['минута', 'минуты', 'минут']);
}
if($seconds > 0){
$res .= $this->pluralForm($seconds, ['секунда', 'секунды', 'секунд']);
}
return $res;
}
public function pluralForm($number, $after)
{
$cases = [2, 0, 1, 1, 1, 2];
return $number.' '.$after[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min(($number % 10), 5)]];
}
Где pluralForm преобразует число и слово в строку где слово склоняется в зависимости от числительного.
только авторизованные пользователи могут оставлять комментарии