Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert youtube api returned time format to seconds using PHP

So the received duration/time format from api is this ;

PT1H1M6S

how can i convert this into seconds using any php function?

like image 625
Shayan Arif Avatar asked Jun 15 '17 17:06

Shayan Arif


1 Answers

Here is the best solution I've encountered with Google on how to convert ISO 8601 values to seconds.

+1 for no preg function use. Right tool for the job in my opinion.

Code credit to RuudBurger - copied from gist: https://gist.github.com/w0rldart/9e10aedd1ee55fc4bc74

/**
 * Convert ISO 8601 values like P2DT15M33S
 * to a total value of seconds.
 *
 * @param string $ISO8601
 */
function ISO8601ToSeconds($ISO8601){
    $interval = new \DateInterval($ISO8601);

    return ($interval->d * 24 * 60 * 60) +
        ($interval->h * 60 * 60) +
        ($interval->i * 60) +
        $interval->s;
}

echo ISO8601ToSeconds('P20DT15M33S'); // Returns a value of 1728933
like image 115
ficuscr Avatar answered Sep 25 '22 07:09

ficuscr