PHP date()小时,分钟和秒,没有前导零

PHP date() Hours, Minutes and Seconds without leading zeros

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Convert seconds to Hour:Minute:Second

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

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

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

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


我会迭代地写它:

1
2
3
4
5
6
7
8
9
10
11
12
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);
}


1
2
3
4
5
6
7
implode(
    ':',
    array_map(
        function($i) { return intval($i, 10); },
        explode(':', gmdate('H:i:s', $duration))
    )
)

however what about if hour==0 then do not print 0: and just have m:s

1
2
3
4
5
6
7
8
9
10
11
preg_replace(
    '~^0:~',
    '',
    implode(
        ':',
        array_map(
            function($i) { return intval($i, 10); },
            explode(':', gmdate('H:i:s', $duration))
        )
    )
)


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

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

intval不应该存在,因为你得到一个字符串并再次将它转换为int。 H:i:s你有10:40:05。
但是,如果持续时间> 24小时,则无效。