use*_*047 3 php youtube-data-api
我是从youtube API请求获取此数组,但在我看来,持续时间格式非常少见.他们为什么不在那里扔几秒钟?无论如何,这是阵列
[duration] => PT2M3S
[dimension] => 2d
[definition] => sd
[caption] => false
Run Code Online (Sandbox Code Playgroud)
有没有办法在PHP中将此持续时间转换为"H:i:s"格式?
在此先感谢您的帮助
acidjazz有一个很好的解决方案,但有一个错字显示分钟.它应该是$di->i几分钟,而不是$di->m.如果你没有在一个对象中使用它,你也可以删除"公共静态"部分,然后我拿出了sprintf().
否则该函数按原样工作:
function duration($ytDuration) {
$di = new DateInterval($ytDuration);
$string = '';
if ($di->h > 0) {
$string .= $di->h.':';
}
return $string.$di->i.':'.$di->s;
}
Run Code Online (Sandbox Code Playgroud)
我会把这个作为对他的答案的评论添加,但是整个"你需要50个评论的声誉"BS,这使我无法坚持这个线程的流程.
实际上它是简单的ISO8601日期.使用正则表达式分割字符串,如(\d+)分钟和秒.然后得到60分钟的整数部分得到小时.获得该部门的剩余部分以获得分钟数.
这是一个应该工作的例子,虽然我没有测试它
preg_match_all('/(\d+)/',$youtube_time,$parts);
$hours = floor($parts[0][0]/60);
$minutes = $parts[0][0]%60;
$seconds = $parts[0][1];
Run Code Online (Sandbox Code Playgroud)