Converting Youtube Data API V3 video duration format to seconds in JavaScript/Node.js

后端 未结 15 2040
北海茫月
北海茫月 2020-12-05 07:09

I\'m trying to convert ISO 8601 string to seconds in JS/Node. The best I could come up with was:

function convert_time(duration) {
    var a = duration.match         


        
15条回答
  •  再見小時候
    2020-12-05 07:51

    You can find a very simple PHP solution here - How To Convert Youtube API Time (ISO 8601 String Video Duration) to Seconds In PHP - Code

    This function convert_time() takes one parameter as input - the Youtube API Time (Video Duration) which is in ISO 8601 string format and returns its duration in seconds.

    function convert_time($str) 
    {
        $n = strlen($str);
        $ans = 0;
        $curr = 0;
        for($i=0; $i<$n; $i++)
        {
            if($str[$i] == 'P' || $str[$i] == 'T')
            {
    
            }
            else if($str[$i] == 'H')
            {
                $ans = $ans + 3600*$curr;
                $curr = 0;
            }
            else if($str[$i] == 'M')
            {
                $ans = $ans + 60*$curr;
                $curr = 0;
            }
            else if($str[$i] == 'S')
            {
                $ans = $ans + $curr;
                $curr = 0;
            }
            else
            {
                $curr = 10*$curr + $str[$i];
            }
        }
        return($ans);
    }
    

    Testing Some Inputs:

    "PT2M23S" => 143
    "PT2M" => 120
    "PT28S" => 28
    "PT5H22M31S" => 19351
    "PT3H" => 10800
    "PT1H6M" => 3660
    "PT1H6S" => 3606
    

提交回复
热议问题