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

时间:2012-12-27 03:03:40

标签: php date time

  

可能重复:
  Convert seconds to Hour:Minute:Second

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

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

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

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

3 个答案:

答案 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小时。