PHP 프로그래밍에서는 종종 현재 시간 또는 작동 시간 스탬프를 가져와야 할 필요성을 겪습니다. gettimeofday () 함수는 PHP에서 내장 된 매우 유용한 시간 기능입니다. 현재 시간 정보가 포함 된 연관 배열을 반환합니다. 이 배열에는 마이크로 초 수준의 시간 정보가 포함되어 있지만 UNIX 타임 스탬프를 직접 반환하지는 않습니다. 타임 스탬프 형식으로 변환하려는 경우에도 여전히 처리가 필요합니다. 이 기사는 gettimeofday ()가 반환 한 배열을 gettimeofday ()를 Unix 타임 스탬프로 변환하는 방법을 공유합니다.
먼저, gettimeofday () 에 의해 반환 된 배열의 구조를 이해해 봅시다. 이 함수는 다음 구조와 연관 배열을 반환합니다.
<span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"sec"</span></span><span> => 현재 시간의 수, </span><span><span class="hljs-comment">// ~에서1970년도1달1매일 몇 초</span></span><span>
</span><span><span class="hljs-string">"usec"</span></span><span> => 마이크로 초 부분, </span><span><span class="hljs-comment">// 소수의 초,范围~에서0도착하다999999</span></span><span>
</span><span><span class="hljs-string">"minuteswest"</span></span><span> => 로컬 타임 존 편차, </span><span><span class="hljs-comment">// 선택 과목</span></span><span>
</span><span><span class="hljs-string">"dsttime"</span></span><span> => 일광 절약 시간 표시, </span><span><span class="hljs-comment">// 선택 과목</span></span><span>
)
</span></span>
SEC는 1970 년 1 월 1 일부터 현재까지의 초를 나타내고 USEC는 마이크로 초 부분을 나타냅니다. 우리는이 두 부분을 타임 스탬프로 병합하려고합니다. 일반적으로 SEC를 초로 변환 한 다음 USEC를 1,000,000으로 나눌 수 있습니다 (즉, 마이크로 초가 초로 변환되는 방법).
다음은 gettimeofday () 가 UNIX 타임 스탬프로 반환 한 배열을 변환하기위한 PHP 샘플 코드입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 현재 시간 정보를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$time_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>();
</span><span><span class="hljs-comment">// 타임 스탬프를 계산하십시오</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-variable">$time_info</span></span><span>[</span><span><span class="hljs-string">'sec'</span></span><span>] + (</span><span><span class="hljs-variable">$time_info</span></span><span>[</span><span><span class="hljs-string">'usec'</span></span><span>] / </span><span><span class="hljs-number">1000000</span></span><span>);
</span><span><span class="hljs-comment">// 출력 타임 스탬프</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 타임 스탬프: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
위 코드에서 :
$ time_info [ 'sec']는 현재 몇 초를 가져옵니다.
$ time_info [ 'usec']는 현재 마이크로 초의 수를 가져옵니다.
마이크로 초의 수를 1,000,000으로 나누어서, 우리는이를 두 번째의 일부 부분으로 변환하고, 부동 UNIX 타임 스탬프로 끝납니다.
시간 정확도 :
마이크로 초 수준의 시간이 포함되어 있기 때문에, 반환 된 타임 스탬프는 초와 마이크로 초의 조합을 나타내는 부동 수입니다. 예를 들어 Round () 함수를 사용하여 결과를 반올림하는 것과 같이 실제 요구에 따라 소수점이 자리를 유지할 수 있습니다.
시간대 및 일광 절약 시간 :
gettimeofday () 함수는 서버의 현지 시간에 따라 결과를 반환합니다. 시간대 편차 또는 일광 절약 시간 문제를 처리 해야하는 경우 시간대를 설정하기 위해 date_default_timezone_set () 과 같은 다른 기능을 결합하거나 시간대를보다 정확하게 처리 할 시간대 객체를 결합해야 할 수도 있습니다.
성능:
마이크로 초 수준 타임 스탬프는 특히 타임 스탬프 비교 또는 로깅을 수행 할 때 일부 고성능 애플리케이션에 매우 중요합니다. 마이크로 초 정밀도가 필요하지 않은 경우 Time () 함수 사용을 고려하여 두 번째 레벨에서 Unix 타임 스탬프를 직접 반환합니다.
gettimeofday () 를 통해 얻은 시간 정보에는보다 세련된 시간 세분화가 포함되어 있으며 고정식 시간 조작이 필요한 시나리오에 적합합니다. 반환 된 결과는 간단한 수학 연산이있는 배열이지만 Unix 타임 스탬프로 쉽게 변환 할 수 있습니다. 이 기술을 마스터하면 PHP에서 시간 관련 기능을보다 효율적으로 처리 할 수 있습니다.