На одном из проектов была задача преобразовывать секунды в полноформатный текстовый вид, то есть из 3600 нужно получить 1 час 00 минут, или же из 1800 получить 00 часов 30 минут

Делается это просто, детали описывать не буду, прикрепляю ниже готовую функцию. Внутри используется другая функция «NumberEnd», она нужна для склонения падежа: 1 час, 2 часа, 5 часов.
Подробнее о ней вы можете прочитать здесь.

function timeToStrDurationConverter($duration) {
$durationM = $duration / 60; #продолжительность в минутах
$hours = floor($durationM / 60);
$minutes = $durationM % 60;
$minutes = ($minutes == 0) ? '00' : $minutes;
return ($durationM == 30) ? '0 часов 30 минут' : "{$hours} час".NumberEnd($hours, ['', 'а', 'ов'])." {$minutes} минут";
}

Результаты функции будут такими:

— timeToStrDurationConverter(1800) вернёт: 00 часов 30 минут
— timeToStrDurationConverter(3600) вернёт: 1 час 00 минут
— timeToStrDurationConverter(5400) вернёт: 1 час 30 минут

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *