我正在从网址中检索日期 `
https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics,status
&videoSyndicated=true
&type=video
&id=CRvoJEqrYTY
&key=AIzaSyD68YEP1N9J0-umFWuzMV3NEN3T5VBvoHo`
为PT1H8M21S
。如何使用php
hh:mm:ss
答案 0 :(得分:1)
字符串'PT1H8M21S'
它不是日期或时间。这是一个区间(具体来说,它是DateInterval字符串表示)。
您需要一个基线DateTime来添加该间隔。
沿着这些方向尝试一些事情
$interval = $dv = new DateInterval('PT1H8M21S'); //the value you get from the url
$time = new DateTime('2000-01-01'); //any date works fine here.
// Note: Hours, mins and seconds == 0
$time->add($interval);
echo $time->format('H:i:s');
首先,从收到的字符串中创建正确的DateInterval对象。
然后,创建一个基线DateTime对象。任何日期都可以,你需要确保你有几小时,几分钟和几秒钟(我假设间隔时间总是不到一整天。)
将间隔添加到基准日期,并根据需要回显小时,分钟和秒。
答案 1 :(得分:0)
尝试使用str_replace这样的功能
$time = "PT1H8M21S";
$time = str_replace("PT", "", $time);
$time = str_replace("H", ":", $time);
$time = str_replace("M", ":", $time);
$time = str_replace("S", "", $time);
echo $time;
如果您愿意,可以在最终字符串中添加零填充
答案 2 :(得分:0)
preg_match('/PT(.+)H(.+)M(.+)S$/', $str, $m3); echo $m3[1].":".$m3[2].":".$m3[3]
答案 3 :(得分:0)
将$ youtube_time更改为您的区间变量
$youtube_time = 'PT1H8M21S';
$duration = new DateInterval($youtube_time);
$videoDuration = (60 * 60 * $duration->h) + (60 * $duration->i) + $duration->s;
print gmdate("H:i:s", $videoDuration);
答案 4 :(得分:-1)
如果您认为1H8M21S意味着1小时8分钟& 21秒然后使用preg macth获取值。
$str = 'PT1H8M21S';preg_match('/PT(.+)H(.*)/', $str, $m);echo $m[1];