Конвертируем время в удобочитаемый формат с функцией HUMAN_READABLE_DURATION()

Функция HUMAN_READABLE_DURATION()

Функция HUMAN_READABLE_DURATION() в WordPress предназначена для преобразования времени в формате HH:ii:ss (часы:минуты:секунды) или ii:ss (минуты:секунды) в удобочитаемый формат.

Возвращаемое значение

Функция возвращает строку, представляющую продолжительность времени в удобочитаемом формате или false в случае ошибки.

Использование

Чтобы использовать функцию, вы можете вызвать её следующим образом:

human_readable_duration( $duration );

Параметры

  • $duration (string): Длительность в виде строки в формате HH:ii:ss или ii:ss. Возможно наличие отрицательного знака (-) перед строкой.
  • По умолчанию: '' (пустая строка)

Примеры

Пример 1

// Установка в английском
echo human_readable_duration( '54:54:54' ); // 54 часа, 54 минуты, 54 секунды
echo human_readable_duration( '54:54' );    // 54 минуты, 54 секунды
echo human_readable_duration( '-54:54' );   // 54 минуты, 54 секунды

Пример 2

// Установка на русском
echo human_readable_duration( '54:54:54' ); // 54 часа, 54 минуты, 54 секунды

Изменения

  • С версии 5.1.0: Функция была добавлена.

Код функции

Вот как выглядит код самой функции:


function human_readable_duration( $duration = '' ) {
if ( ( empty( $duration ) || ! is_string( $duration ) ) ) {
return false;
}

$duration = trim( $duration );

// Убираем возможный отрицательный знак.
if ( str_starts_with( $duration, '-' ) ) {
    $duration = substr( $duration, 1 );
}

// Извлекаем части продолжительности.
$duration_parts = array_reverse( explode( ':', $duration ) );
$duration_count = count( $duration_parts );

$hour   = null;
$minute = null;
$second = null;

if ( 3 === $duration_count ) {
    // Проверка формата HH:ii:ss.
    if ( ! ( (bool) preg_match( '/^([0-9]+):([0-5]?[0-9]):([0-5]?[0-9])$/', $duration ) ) ) {
        return false;
    }
    // Три части: часы, минуты и секунды.
    list( $second, $minute, $hour ) = $duration_parts;
} elseif ( 2 === $duration_count ) {
    // Проверка формата ii:ss.
    if ( ! ( (bool) preg_match( '/^([0-5]?[0-9]):([0-5]?[0-9])$/', $duration ) ) ) {
        return false;
    }
    // Две части: минуты и секунды.
    list( $second, $minute ) = $duration_parts;
} else {
    return false;
}

$human_readable_duration = array();

// Добавляем часть с часами в строку.
if ( is_numeric( $hour ) ) {
    $human_readable_duration[] = sprintf( _n( '%s hour', '%s hours', $hour ), (int) $hour );
}

// Добавляем часть с минутами в строку.
if ( is_numeric( $minute ) ) {
    $human_readable_duration[] = sprintf( _n( '%s minute', '%s minutes', $minute ), (int) $minute );
}

// Добавляем часть с секундами в ст��оку.
if ( is_numeric( $second ) ) {
    $human_readable_duration[] = sprintf( _n( '%s second', '%s seconds', $second ), (int) $second );
}

return implode( ', ', $human_readable_duration );

}

Заключение

Функция HUMAN_READABLE_DURATION позволяет легко преобразовать продолжительность времени в более понятный и удобный формат. Это может быть полезно для отображения времени на сайте, особенно если он использует длительность в своих расчетах. Теперь вы можете реализовать эту функцию в своих проектах на WordPress!

Leave a Reply

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