Преобразование секунд в человеко-читаемый формат времени
Функция для создания понятного для чтения формата времени из переданных секунд, например, 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 сек.