6

可能重复:
将秒转换为时:分:秒

我一直在互联网上搜索,以找到一种将秒转换为分钟的好方法:没有前导零的秒。我已经检查了这个问题,这是我唯一能找到的问题,但是这些答案看起来都不是很好。也许它们是实现这一目标的唯一和最好的方法,但我希望不是。

我已经这样做了,它给了我没有前导零的分钟数,但是我无法获得秒数。我能想到这样做的唯一方法是做几行数学等,但对于像这样简单的事情来说,这似乎是一项非常多的工作......我不知道为什么 PHP 没有无论如何,它都没有内置几分钟和几秒钟......

intval(gmdate("i:s", $duration));

编辑 我要做的就是将视频中的秒数转换为 H:M:S 格式。

4

3 回答 3

2
implode(
    ':',
    array_map(
        function($i) { return intval($i, 10); },
        explode(':', gmdate('H:i:s', $duration))
    )
)

但是如果 hour==0 那么不打印 0: 而只有 m:s

preg_replace(
    '~^0:~',
    '', 
    implode(
        ':',
        array_map(
            function($i) { return intval($i, 10); },
            explode(':', gmdate('H:i:s', $duration))
        )
    )
)
于 2012-12-27T03:12:38.073 回答
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);
}
于 2012-12-27T03:32:13.967 回答
1

gmdate 将时间戳作为第二个参数。你应该这样做:

echo gmdate("H:i:s", mktime(0, 0, 0, 1, 1, 1998) + $duration);

intval 不应该在那里,因为您正在获取一个字符串并将其再次转换为 int 。使用 H:i:s 你有 10:40:05。
但是,如果您的持续时间 > 然后 24 小时,这将不起作用。

于 2012-12-27T03:09:01.127 回答