在php中获取视频时长的格式化时间

时间:2011-12-06 14:13:14

标签: php

这应该很容易......

我的持续时间以秒为单位, 我想以小时输出:分钟:秒格式

当我尝试...

// video duration is 1560 seconds

<?=date("h:i:s",$video->duration)?>

...输出07:26:00而不是00:26:00。所以我认为这是一个时区问题。

在我的应用程序开始时,我像这样设置时区

date_default_timezone_set('America/Montreal');

现在,如果我将时区更改为GMT,我想我会得到正常值但是每次我想要一个简单的持续时间(并将时区重新设置为America / Montreal)时我不想这样做

我有什么选择?

2 个答案:

答案 0 :(得分:1)

date用于获取unix时间戳的人类可读格式,因此它不是您需要的。换句话说,该功能用于显示日期(如12.12.2012),而不是视频的持续时间

为此你可以创建一个从总秒数开始的函数,并执行类似

的操作
$seconds = $total_time %60;
$minutes = (floor($total_time/60)) % 60;
$hours = floor($total_time/3600);
return $hours . ':' . $minutes . ':' . $seconds;

也许你需要调整一下,因为我没有测试它。如果视频很短,还有一些测试可以跳过几小时或几分钟

答案 1 :(得分:0)

这是一个老问题,但我想我可以为此提供答案:

function convert_to_duration($total_time){
    $seconds = $total_time %60;
    $minutes = (floor($total_time/60)) % 60;
    $hours = floor($total_time/3600);
    if($hours == 0){
        return $minutes . ':' . sprintf('%02d', $seconds);
    }else{
        return $hours . ':' . $minutes . ':' . sprintf('%02d', $seconds);
    }
}