Strftime 함수는 날짜와 시간을 포맷하는 데 사용되며 지정된 형식을 기반으로 문자열을 반환합니다. 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>()) : </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>여기서 $ 형식 은 날짜와 시간의 형식이고 $ timestamp는 형식화되는 Unix 타임 스탬프입니다 (기본값은 현재 시간입니다). 예를 들어, 스트프 피스를 사용하여 현재 시간을 포맷하십시오.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>);
</span></span>이것은 2025-06-16 12:30:45 와 유사한 현재 날짜와 시간을 출력합니다.
시간대는 날짜 서식에 스트프 프리 타임을 사용할 때 중요한 요소입니다. 기본적으로 Strftime은 서버의 현재 시간대를 기준으로 날짜와 시간을 처리합니다. 그러나 잘못된 시간대에서 프로그램을 실행하면 시간대 변환 오류가 발생하여 표시 시간이 예상 시간과 일치하지 않습니다.
Strftime은 서버의 기본 시간대 설정을 따릅니다. 즉, 서버의 시간대 구성이 올바르지 않으면 스트프 프프 타임을 사용한 시간 출력이 잘못된 시간대를 기반으로 형식화됩니다. date_default_timezone_get () 를 통해 현재 시간대를 볼 수 있습니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
</span></span>시간대가 올바르지 않은 경우 date_default_timezone_set ()을 사용하여 올바른 시간대를 설정할 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span></span>이런 식으로, stftime 이 호출되면, 반환 된 시간은 설정 시간대에 따라 형식화됩니다.
Strftime은 시간을 포맷 할 수 있지만 시간대 변환 자체를 지원하지는 않습니다. 다른 시간 영역 사이에서 시간을 변환 해야하는 경우 가장 좋은 방법은 DateTime 클래스를 사용하고 먼저 DateTime 객체를 작성한 다음 시간대를 조정 한 다음 Strftime을 사용하여 서식 시간을 출력하는 것입니다.
<span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'now'</span></span><span>, </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>));
</span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>, </span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTimestamp</span></span><span>());
</span></span>이 예에서는 먼저 UTC 시간대에 대한 DateTime 객체를 작성한 다음 Settimezone 방법을 통해 Shanghai Time Zone (Asia/Shanghai)으로 변환하고 Strftime을 사용하여 시간을 포맷합니다.
다른 지역은 일광 절약 시간 (DST)에 따라 시간대를 조정할 수 있으며, 이는 스트프 프리 타임 의 출력에 영향을 미칩니다. 이 경우 DateTime 클래스를 사용하여 Strftime을 사용하여 직접 작동하는 것보다 시간대 및 일광 절약 시간 문제를 처리하는 것이 더 안전합니다. 예를 들어, 미국과 유럽의 일부 지역은 계절을 기준으로 시간대 오프셋을 전환합니다. DateTimezone은 이러한 일광 절약 시간 조정을 자동으로 처리하는 반면 Strftime은 직접 처리 할 수 없습니다.
예를 들어:
<span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 12:00:00'</span></span><span>, </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Europe/London'</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>, </span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTimestamp</span></span><span>());
</span></span>여기서 유럽/런던은 일광 절약 시간에 따라 시간대 오프셋을 자동으로 조정하며, 서버의 로컬 시간대에 따라 스트프 프프 타임이 시간을 포맷합니다.
Strftime을 사용할 때는 다른 형식의 기호로 시간 영역의 지원에주의를 기울여야합니다. 공통 시간 형식 기호는 다음과 같습니다.
%y : 년
%m : 월
%D : 날짜
%H : 시간 (24 시간 시스템)
%m : 분
%S : 초
그러나 Strftime 자체는 시간대 정보를 직접 포맷하는 능력을 제공하지 않습니다. 시간대 정보를 표시 해야하는 경우 DateTime 클래스의 형식 메소드를 결합하거나 date_default_timezone_get ()을 사용하여 시간대를 출력해야합니다.
Strftime은 1970 년 1 월 1 일 이후 몇 초를 나타내는 정수 인 타임 스탬프를 형식화한다는 점에 유의해야합니다. 그러나 타임 스탬프는 시간대와 무관하지만 타임 스탬프는 현지 시간과 관련이 있음을 해석하는 방법입니다. 이를 위해 Strftime은 서버 시간대에 따라 출력을 포맷합니다.
따라서 다른 시간대에서 동일한 타임 스탬프를 얻으려면 타임 스탬프를 생성 할 때 올바른 시간대가 지정되어 있는지 확인해야합니다.
날짜 및 시간 형식에 Strftime 함수를 사용하는 경우 시간 영역 변환을 처리하는 것이 무시할 수없는 문제입니다. 개발자는 다음 사항에주의를 기울여야합니다.
시간대 설정 : 서버의 시간대가 올바르게 설정되었는지 확인하거나 코드에서 시간대를 명시 적으로 설정하십시오.
시간대 변환 : Strftime 자체는 시간대 영역 변환을 처리 할 수 없습니다. DateTime 클래스를 사용하여 시간대 전환을 처리 한 다음 Strftime을 사용하여 시간을 포맷하는 것이 좋습니다.
일광 절약 시간 문제 : 일광 절약 시간 스위치 중에 시간대 오프셋이 변경 될 수 있으며 DateTimezone은 일광 절약 시간을 자동으로 처리 할 수 있습니다.
형식 기호 사용 : Strftime 의 형식 기호는 시간대 정보의 직접 출력을 지원하지 않으며 DateTime 클래스와 함께 고려 될 수 있습니다.
이러한 주요 포인트를 이해하면 개발자가 교차 시간 영역 응용 프로그램을 처리 할 때 일반적인 시간 오류를 피하고 시스템 신뢰성과 정확성을 향상시키는 데 도움이 될 수 있습니다.