如何使用php获取日期“hh:mm:ss”格式

时间:2014-02-05 14:47:42

标签: php

我正在从网址中检索日期 `

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

5 个答案:

答案 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];