Convert youtube api returned time format to seconds using PHP

拈花ヽ惹草 提交于 2020-01-15 01:52:47

问题


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

PT1H1M6S

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


回答1:


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



回答2:


PHP Function to convert ISO8601 Duration To Seconds.

<?php

function convertISO8601DurationToSeconds($iso8601DurationStr)
{
   $interval = new \DateInterval($iso8601DurationStr);
   $seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s;
   return (int) $seconds;
}

   echo convertISO8601DurationToSeconds('PT1H1M6S');

?>



回答3:


This can be done using the RegEx: ^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$ You can then use the various PHP methods for manipulating RegEx to store the time in variables.



来源:https://stackoverflow.com/questions/44573677/convert-youtube-api-returned-time-format-to-seconds-using-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!