Преобразование секунд в человеко-читаемый формат времени

Функция для создания понятного для чтения формата времени из переданных секунд, например, 85 минут превратим в 1 час 20 минут 5 секунд.

В WP есть похожая функция которая превращает формат времени HH:ii:ss или ii:ss в читаемый вид: human_readable_duration()

/**
 * Converts seconds to human-readable time format:
 * 1 hour 20 minutes 5 seconds.
 *
 * @param int $seconds The number of seconds to process.
 *
 * @return string
 */
function seconds_to_human( int $seconds ): string{

	$days = (int) ( $seconds / DAY_IN_SECONDS );
	$hour = (int) ( ( $seconds % DAY_IN_SECONDS ) / HOUR_IN_SECONDS );
	$minute = (int) ( ( $seconds % HOUR_IN_SECONDS ) / 60 );
	$seconds = (int) ( $seconds % 60 );

	$durations = array_filter( [
		'days'    => $days ? num_decline( $days, 'день,дня,дней' ) : '',
		'hour'    => $hour ? num_decline( $hour, 'час,часа,часов' ) : '',
		'minute'  => $minute ? "$minute мин." : '',
		'seconds' => $seconds ? "$seconds сек." : '',
	] );

	return implode( ' ', $durations );
}

Для склонения в коде используется функция num_decline().

Пример, работы:

echo seconds_to_human( 80 * 60 ); // 1 час 20 мин.
echo seconds_to_human( 65887 ); // 18 часов 18 мин. 7 сек.
echo seconds_to_human( 658887 ); // 7 дней 15 часов 1 мин. 27 сек.