我一直在互联网上搜索,找到一种将秒转换为分钟的好方法:没有前导零的秒。我已经检查了this question,这是我能找到的唯一一个,但是这些答案都不是很好。也许他们是实现这一目标的唯一和最佳方式,但我希望不会。
我已经完成了这个并且它给了我没有前导零的分钟数,但是我无法获得秒数。我能想到这样做的唯一方法就是做几行数学等等,但这对于像这样简单的事情似乎是一项非常多的工作......我不知道为什么PHP没有无论如何都要内置几分钟和几秒......
intval(gmdate("i:s", $duration));
修改 我所要做的就是将视频中的秒数转换为H:M:S格式。
答案 0 :(得分:2)
implode(
':',
array_map(
function($i) { return intval($i, 10); },
explode(':', gmdate('H:i:s', $duration))
)
)
然而,如果小时== 0则不打印0:并且只有m:s
preg_replace(
'~^0:~',
'',
implode(
':',
array_map(
function($i) { return intval($i, 10); },
explode(':', gmdate('H:i:s', $duration))
)
)
)
答案 1 :(得分:2)
我会迭代地写它:
function duration_to_timestring($duration)
{
$s = [];
if ($duration > 3600) {
$s[] = floor($duration / 3600);
$duration %= 3600;
}
$s[] = floor($duration / 60);
$s[] = floor($duration % 60);
return join(':', $s);
}
答案 2 :(得分:1)
gmdate将时间戳作为第二个参数。 你应该这样做:
echo gmdate("H:i:s", mktime(0, 0, 0, 1, 1, 1998) + $duration);
intval不应该存在,因为你得到一个字符串并再次将它转换为int。 H:i:s你有10:40:05 但是如果你的持续时间> 1,这将不起作用。然后24小时。