【问题标题】:Youtube API v3 - get durationYoutube API v3 - 获取持续时间
【发布时间】:2015-07-15 05:56:40
【问题描述】:

通过使用 Youtube API v3,我得到了以下形式的 duarion。

PT3H32M50S

我想把它转换成 03:32:50 格式。

请注意:如果视频时长不超过一小时,我将获得 PT32M50S。在这种情况下,我应该得到 00:32:50。

请指导我找到最佳解决方案。

【问题讨论】:

    标签: php youtube-api youtube-data-api


    【解决方案1】:

    我有以下解决方案,适用于我所有可能的情况。

    $duration = str_ireplace(array('PT', 'H', 'M', 'S'), array('',':',':',''),         
    $youtubeArrData->items[0]->contentDetails->duration);
    if(substr_count($duration, ':') == 0){
        $duration = "00:00:".$duration;
    }
    if(substr_count($duration, ':') == 1){
        $duration = "00:".$duration;
    }
    $video_Length = date("H:i:s.u", strtotime($duration));
    

    希望这对每个人都有效。

    【讨论】:

      【解决方案2】:
      function youtubeTime($yStr){
          $s=$m=$h='00';
          preg_match_all('/(\d+)/',$yStr,$parts);
          if(!empty($parts)){
              $ts=array_pop($parts[0]);
              $s = ($ts<10)? '0'.(int)$ts : $ts;
              $ms=array_pop($parts[0]);
              $m = ($ms<10)? '0'.(int)$ms : $ms;
              $hs=array_pop($parts[0]);
              $h = ($hs<10)? '0'.(int)$hs : $hs;
          }
          return $h.':'.$m.':'.$s;
      }
      

      【讨论】:

        【解决方案3】:

        试试这个...Demo Here

        <?php
        $duration_youtube='PT3H32M50S';
        if (strpos($duration_youtube,'H') !== false)
        {
            $duration_youtube_temp = $duration_youtube;
            preg_match('~PT(.*?)H~', $duration_youtube_temp, $duration_youtube_temp_out);
        
            $duration_youtube_temp_out_pad=str_pad($duration_youtube_temp_out[1], 2, '0', STR_PAD_LEFT);
        
            $duration_youtube=preg_replace("/".$duration_youtube_temp_out[1]."/",$duration_youtube_temp_out_pad,$duration_youtube,1);
        
            $duration_youtube=str_replace('PT','',$duration_youtube);
            $duration_youtube=str_replace('H',':',$duration_youtube);
            $duration_youtube=str_replace('M',':',$duration_youtube);
            $duration_youtube=str_replace('S','',$duration_youtube);
        }
        else
        {
            $duration_youtube=str_replace('PT','00:',$duration_youtube);
            $duration_youtube=str_replace('M',':',$duration_youtube);
            $duration_youtube=str_replace('S','',$duration_youtube);
        }
        echo $duration_youtube;
        ?>
        

        【讨论】:

          【解决方案4】:

          使用str_replace 非常简单易行的解决方案。 DEMO

          echo str_ireplace(array('PT', 'H', 'M', 'S'), array('0',':',':',''), 'PT3H32M50S');
          

          【讨论】:

          • 最终输出类似于“3:32:50”。我希望它像“03:32:50”
          猜你喜欢
          • 2015-08-24
          • 2017-07-14
          • 2015-02-08
          • 2013-05-24
          • 2014-08-15
          • 2019-11-01
          • 2012-02-28
          • 2016-06-06
          • 2015-10-03
          相关资源
          最近更新 更多