这应该很容易......
我的持续时间以秒为单位, 我想以小时输出:分钟:秒格式
当我尝试...
// 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)时我不想这样做
我有什么选择?
答案 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);
}
}