답변:
사용 sprintf
:
sprintf('%08d', 1234567);
또는 다음을 사용할 수도 있습니다 str_pad
.
str_pad($value, 8, '0', STR_PAD_LEFT);
sprintf('%+03d:00 UTC',$i)
위치 를 추가하고 $i
필요에 따라 + 또는-를 인쇄하고 2 자리 미만의 숫자에 선행 0을 넣습니다. SELECT
HTML 로 시간대를 만들기에 좋습니다.
sprintf
( 3v4l.org/junvv/perf#output )는 str_pad
( 3v4l.org/cliNP/perf#output ) 보다 약간 빠릅니다.
1 대신 01이 필요할 때 다음이 나를 위해 일했습니다.
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
입력 숫자가 항상 7 자리 또는 8 자리 인 경우 다음을 사용할 수도 있습니다.
$str = ($input < 10000000) ? 0 . $input : $input;
몇 가지 테스트를 실행하여 str_pad
또는 최대 두 배 빠릅니다 sprintf
.
입력에 길이가 있으면 다음을 사용할 수도 있습니다.
$str = substr('00000000' . $input, -8);
이것은 다른 것만 큼 빠르지는 않지만 str_pad
and 보다 약간 빠릅니다 sprintf
.
BTW : 내 테스트도 그렇게 말한다면 sprintf
조금 더 빨리보다 str_pad
. PHP 5.6으로 모든 테스트를 수행했습니다.
편집 : 입력해도 substr
버전은 여전히 매우 빠른 (PHP 7.2)가, 그것은 또한 경우에 깨진 것 같다 귀하의 의견은 더 이상 당신을 패드에 원하는 길이보다 될 수 있습니다. 예를 들어, 3 자리 숫자로 채우고 입력 한 값은 4 자리이며 substr('0000' . '1234', -3) = '234'
마지막 3 자리 만 나타납니다.
$
방금 수정)
이 간단한 함수를 작성하여 다음 형식을 생성했습니다. 01:00:03
초는 항상 표시됩니다 (0 인 경우에도). 0보다 크거나 시간 또는 일이 필요한 경우 분이 표시됩니다. 시간은 0보다 크거나 일이 필요한 경우에 표시됩니다. 일이 0보다 큰 경우 표시됩니다.
function formatSeconds($secs) {
$result = '';
$seconds = intval($secs) % 60;
$minutes = (intval($secs) / 60) % 60;
$hours = (intval($secs) / 3600) % 24;
$days = intval(intval($secs) / (3600*24));
if ($days > 0) {
$result = str_pad($days, 2, '0', STR_PAD_LEFT) . ':';
}
if(($hours > 0) || ($result!="")) {
$result .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
}
if (($minutes > 0) || ($result!="")) {
$result .= str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
}
//seconds aways shown
$result .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $result;
} //funct
예 :
echo formatSeconds(15); //15
echo formatSeconds(100); //01:40
echo formatSeconds(10800); //03:00:00 (mins shown even if zero)
echo formatSeconds(10000000); //115:17:46:40
function duration($time){
$hours = '';
$minutes = '00:';
$seconds = '00';
if($time >= 3600){
//0 - ~ hours
$hours = floor($time / 3600);
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 3600;
}
if($time >= 60){
//0 - 60 minute
$minutes = floor($time / 60);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 60;
}
if($time){
//0 - 60 second
$seconds = str_pad($time, 2, '0', STR_PAD_LEFT);
}
return $hours . $minutes . $seconds;
}
echo duration(59); // 00:59
echo duration(590); // 09:50
echo duration(5900); // 01:38:20