현재 위치: > 최신 기사 목록> gettimeofday 및 날짜 함수를 사용하여 밀리 초 형식의 출력을 구현하십시오.

gettimeofday 및 날짜 함수를 사용하여 밀리 초 형식의 출력을 구현하십시오.

gitbox 2025-05-29

PHP에서는 종종 현재 시간을 가져 와서 출력을 형식화해야합니다. 기본 날짜 함수는 정확도 만 2 초만 지원합니다. 그러나 로깅, 성능 모니터링 등과 같은 일부 시나리오에서는 출력 시간을 밀리 초까지 정확해야합니다. 이 기사는 gettimeofday날짜 기능을 결합하여 시간 형식 출력을 밀리 초과 달성하는 방법을 소개합니다.


1. gettimeofday 함수 소개

gettimeofday 는 현재 시간을 가져 오는 기능으로 현재 Unix 타임 스탬프 및 마이크로 초 정보를 반환합니다. 반환 값은 어레이 또는 부동 소수점 번호 일 수 있으며, 이는 초와 마이크로 초를 포함합니다.

 print_r(gettimeofday());

출력 예 :

 Array
(
    [sec] => 1617181723
    [usec] => 123456
    [minuteswest] => 0
    [dsttime] => 0
)

여기서 SEC 는 현재 초 수 이며 USEC는 현재 초의 마이크로 초입니다.

2. 밀리 초 형식 출력을 달성하기 위해 날짜gettimeofday 결합

PHP의 날짜 함수는 초 시간 스탬프를 형식화 할 수있는 반면 밀리 초 부분은 gettimeofday 함수를 통해 얻을 수 있습니다. 간단한 예제 코드는 다음과 같습니다.

 <?php
$time = gettimeofday();
$sec = $time['sec'];      // 초 수
$usec = $time['usec'];    // 微초 수
$milliseconds = floor($usec / 1000); // 마이크로 초를 밀리 초로 변환하십시오

// 시간 문자열을 형식화하십시오
$formattedTime = date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);

echo $formattedTime;
?>

출력 결과 예 :

 2025-05-24 15:43:12.123

여기서 STR_PAD는 밀리 초가 3 자리 미만의 0을 추가하는 것과 같이 항상 3 자리 숫자인지 확인하는 데 사용됩니다.

3. 자세한 코드 설명

  • gettimeofday ()는 현재 시간의 초와 마이크로 초를 반환합니다.

  • 날짜를 사용하여 초 ( 'ymd h : i : s', $ sec)를 사용합니다.

  • 마이크로 초를 1000으로 나누어 밀리 초로 변환하십시오.

  • str_pad를 사용하여 밀리 초 부분이 트리플 숫자인지 확인하십시오.

4. 함수로 캡슐화

멀티플렉싱의 편의를 위해이를 기능으로 캡슐화 할 수 있습니다.

 <?php
function getCurrentTimeWithMilliseconds() {
    $time = gettimeofday();
    $sec = $time['sec'];
    $usec = $time['usec'];
    $milliseconds = floor($usec / 1000);
    return date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);
}

// 사용의 예
echo getCurrentTimeWithMilliseconds();
?>

getCurrentTimeWithMilliseconds ()를 호출하여 밀리 초의 시간 문자열을 얻으십시오.


요약

gettimeofday날짜 함수를 결합하여 PHP의 시간 형식 출력과 밀리 초의 시간 형식 출력을 쉽게 구현할 수 있습니다. 이 방법은 추가 확장에 의존하지 않으며 호환 가능하며 정확한 타임 스탬프가 필요한 시나리오에 적합합니다.


 <?php
function getCurrentTimeWithMilliseconds() {
    $time = gettimeofday();
    $sec = $time['sec'];
    $usec = $time['usec'];
    $milliseconds = floor($usec / 1000);
    return date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);
}

echo getCurrentTimeWithMilliseconds();
?>