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