요일 - php 한시간 전




PHP에서 앞에 오는 0으로 숫자 서식 지정하기 (8)

값이 1234567 변수가 있습니다.

정확히 8 자리 숫자, 즉 01234567 을 포함하고 싶습니다.

거기에 PHP 함수가 있습니까?


1 대신에 01이 필요할 때, 다음은 나를 위해 일했습니다 :

$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);

간단한 대답

$p = 1234567;
$p = sprintf("%08d",$p);

나는 "8 자리 이상이 될 수 없다"는 말을 해석하는 방법과 그것이 입력 또는 출력을 언급하는지를 잘 모릅니다. 출력을 참조하는 경우 추가 substr () 호출을 사용하여 문자열을 클립해야합니다.

처음 8 자리를 잘라내려면

$p = substr(sprintf('%08d', $p),0,8);

마지막 8 자리를 잘라내려면

$p = substr(sprintf('%08d', $p),-8,8);

비록 당신이 뭘하고 싶은지 정말로 모르겠지만 아마 당신은 sprintf 찾고있을 것입니다.

이것은 다음과 같습니다.

$value = sprintf( '%08d', 1234567 );

이 간단한 함수를 작성하여이 형식을 생성했습니다. 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 

입력 된 숫자가 항상 7 또는 8 자리이면,

$str = ($input < 10000000) ? 0 . $input : $input;

몇 가지 테스트를 실행하여 str_pad 또는 sprintf 만큼 빠른 속도가 될 것입니다.
입력에 길이가 있으면 입력 할 수 있습니다.

$str = substr('00000000' . $input, -8);

이것은 다른 하나만큼 빠르지는 않지만 str_padsprintf 보다 조금 더 빠르다.

Btw : 내 테스트는 또한 sprintfstr_pad 보다 약간 빠르다고 str_pad . 나는 PHP 5.6로 모든 테스트를했다.


sprintf 사용 :

sprintf('%08d', 1234567);

또는 str_pad 를 사용할 수도 있습니다.

str_pad($value, 8, '0', STR_PAD_LEFT);

echo str_pad("1234567", 8, '0', STR_PAD_LEFT);

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




format