PHP date() часы, минуты и секунды без ведущих нулей [дубликат]

Возможные Дубликаты:
преобразовать секунды в час: минута: секунда

Я искал по всему интернету, чтобы найти хороший способ преобразование секунд в минуты:секунды без ведущих нулей. Я уже выписался этот вопрос, который является единственным, который я даже смог найти, однако ни один из этих ответов не выглядит очень хорошо. Возможно, они являются единственным и лучшим способом достичь этого, однако я бы надеюсь, что нет.

Я сделал это, и это дает мне число без ведущих нулей, однако я не могу получить секунд. Единственный способ, которым я могу думать об этом, - это сделать несколько строк математики и тому подобное, но это кажется ужасно большой работой для чего-то такого простого... что я не знаю, почему PHP не имеет встроенного в течение нескольких минут и секунд....

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

редактировать Все, что я пытаюсь сделать, это преобразовать количество секунд в видео, в формате H:M:S.

3 ответов


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))
        )
    )
)

Я бы просто написал это итеративно:

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);
}

gmdate принимает отметку времени в качестве второго параметра. Вы должны сделать что-то вроде этого:

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

intval не должно быть, так как вы получаете строку и снова преобразуете ее в int. С H:i:s у вас есть 10:40: 05.
Однако это не сработает, если у вас есть продолжительность > затем 24h.