在php中获取视频持续时间的格式时间


Get formated time for a video duration in 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,我会得到我的正常值,但我不想每次都这样做,我想要一个简单的持续时间(并将时区重新设置为美国/蒙特利尔)

我有什么选择?

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

对于

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

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

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

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

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);
    }
}