Конвертировать формат воспроизведения PT в M: SS - PullRequest
0 голосов
/ 20 марта 2019

Как я могу преобразовать формат PT4M4S, например, из формата API YouTube, в формат для просмотра, например 4:04
... и, возможно, для интереса дополнительно PT1H4M4S в 1:04:04 оба с начальным нулем начетыре.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019
  1. Преобразование длительности в секунды с помощью функции ниже ( извлечено из этого потока SO ):

    function ISO8601ToSeconds($ISO8601) {

        $interval = new \DateInterval($ISO8601);
    
        return 
        ($interval->d * 24 * 60 * 60) +
        ($interval->h * 60 * 60) +
        ($interval->i * 60) +
        ($interval->s);
    }
    
  2. Отформатируйте время в секундах в соответствии с вашими потребностями:

    gmdate("H:i:s", ISO8601ToSeconds('PT4M4S'));

0 голосов
/ 20 марта 2019

Это должно работать для вас.

Отказ от ответственности: Это не было проверено, поэтому я не знаю, работает ли оно

<?php 
    $str = 'PT1H4M4S'; 
    $str = substr($str, 2); //Returns 4M4S

    $timeArray = str_split($string, 2); //Returns { '4M', '4S' }

    $formattedTime = '';

    foreach ($timeArray as $time) {
        switch (substr($time, 0)) //Looking at first value
        {
            case 'H':
                $formattedTime .= substr($time, 1); //Returns 4
                break;
            case 'M':
                $formattedTime .= str_pad(substr($time, 1), 2, '0', STR_PAD_LEFT); //Returns 04
                break;
            case 'S':
                $formattedTime .= str_pad(substr($time, 1), 2, '0', STR_PAD_LEFT); //Returns 04
                break;
        }

        $formattedTime .= ':';
    }

    $formattedTime .= substr($time, -1); //Removes last ':'

    echo $formattedTime; 
?> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...