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.