PHP의 날짜와 시간을 다룰 때 시간대 관리는 종종 개발자에게 중요한 문제입니다. PHP는 응용 프로그램이 다른 지역의 요구 사항에 따라 날짜 및 시간을 올바르게 표시 할 수 있도록하기 위해 시간대 설정을 활성화하는 몇 가지 도구를 제공합니다. 그 중에서도 DateTime :: Settimezone 및 Timezone_open 기능은 개발자가 시간대를 유연하게 설정하는 데 도움이되는 일반적으로 사용되는 두 가지 도구입니다. 이 기사는이 두 기능을 결합하여 다중 시간 영역 환경에서 시간 변환을 처리하는 방법을 자세히 소개합니다.
DateTime :: Settimezone 은 DateTime 클래스의 방법으로 DateTime 객체의 시간대를 변경합니다. DateTime 객체를 만들 때이 방법을 사용하여 시간대를 지정된 시간대 객체로 변경하십시오. 일반적인 사용 시나리오에는 사용자 입력 시간을 지정된 시간대로 변환하거나 UTC 시간을 현지 시간으로 변환하는 것이 포함됩니다.
Timezone_open 은 PHP의 함수로 지정된 시간대를 나타내는 DateTimezone 객체를 열고 반환하는 데 사용됩니다. 이 시간대 객체는 datetime :: settimezone 으로 전달하여 DateTime 객체의 시간대를 설정할 수 있습니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span></span>
위의 코드는 상하이 시간대를 나타내는 DateTimezone 객체를 반환합니다.
다중 시간 영역 환경에서는 Timezone_open을 사용하여 DateTimezone 객체를 작성한 다음 DateTime :: Settimezone을 통해 DateTime 객체에 적용 할 수 있습니다. 이를 통해 유연한 시간대 변환을 달성 할 수 있습니다.
UTC 시간을 "아시아/상하이"시간대 시간으로 변환해야한다고 가정하면 특정 코드는 다음과 같습니다.
<span><span><span class="hljs-comment">// a UTC 시간대 DateTime 물체</span></span><span>
</span><span><span class="hljs-variable">$utcDateTime</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-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>));
</span><span><span class="hljs-comment">// 인쇄 UTC 시간</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'UTC 시간: '</span></span><span> . </span><span><span class="hljs-variable">$utcDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 사용 timezone_open 지정된 시간대를 엽니 다</span></span><span>
</span><span><span class="hljs-variable">$shanghaiTimeZone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-comment">// 할 것이다 UTC 시간변환上海시간대시간</span></span><span>
</span><span><span class="hljs-variable">$utcDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-variable">$shanghaiTimeZone</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">$utcDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>
출력 결과 :
<span><span><span class="hljs-string">UTC</span></span><span> </span><span><span class="hljs-string">시간:</span></span><span> </span><span><span class="hljs-number">2025-06-29 10:00:00</span></span><span>
</span><span><span class="hljs-string">上海시간:</span></span><span> </span><span><span class="hljs-number">2025-06-29 18:00:00</span></span><span>
</span></span>
때때로 사용자는 시스템의 시간대 또는 기타 시간대로 변환 해야하는 특정 시간대에 시간을 제공 할 수 있습니다. 다음 예제는 사용자 입력 "2025-06-29 15:00:00"을 UTC 시간으로 변환하는 방법을 보여줍니다.
<span><span><span class="hljs-comment">// 用户输入的시간和시간대(假设用户提供的是纽约시간)</span></span><span>
</span><span><span class="hljs-variable">$userTime</span></span><span> = </span><span><span class="hljs-string">'2025-06-29 15:00:00'</span></span><span>;
</span><span><span class="hljs-variable">$userTimeZone</span></span><span> = </span><span><span class="hljs-string">'America/New_York'</span></span><span>;
</span><span><span class="hljs-comment">// 만들다 DateTime 물체,사용자의 시간대를 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$userDateTime</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-variable">$userTime</span></span><span>, </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-variable">$userTimeZone</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">$userDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 변환 UTC 시간대</span></span><span>
</span><span><span class="hljs-variable">$userDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'UTC'</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">'변환 UTC 시간: '</span></span><span> . </span><span><span class="hljs-variable">$userDateTime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>
출력 결과 :
<span><span><span class="hljs-string">用户시간</span></span><span> </span><span><span class="hljs-string">(뉴욕 시간대):</span></span><span> </span><span><span class="hljs-number">2025-06-29 15:00:00</span></span><span>
</span><span><span class="hljs-string">변환</span></span><span> </span><span><span class="hljs-string">UTC</span></span><span> </span><span><span class="hljs-string">시간:</span></span><span> </span><span><span class="hljs-number">2025-06-29 19:00:00</span></span><span>
</span></span>
DateTime :: Settimezone을 사용하는 경우, 대상 시간 구역이 원래 시간대와 동일하면 PHP는 원래 객체로 직접 돌아와서 새로운 DateTime 객체를 재현하지 않습니다.
Timezone_open은 지역/도시 형식 ( 아시아/상하이 ), 오프셋 형식 (예 : +02 : 00 ) 등을 포함한 여러 시간 영역 형식을 지원합니다.
시간대 변환은 DST (Daylight Saving Time)를 고려하여 선택된 시간대의 규칙에 따라 자동으로 조정됩니다.
DateTime :: Settimezone 및 Timezone_Open 기능을 사용하면 매우 유연하고 강력한 시간대 변환을 달성 할 수 있습니다. 시간대를 합리적으로 선택하면 사용자가 항상 전 세계를 방문 할 때 시간대와 일치하는 정확한 시간을 볼 수 있습니다. PHP의 두 기능은 시스템 시간을 사용자 시간으로 변환하거나 한 시간 영역에서 시간을 다른 시간으로 변환하는지 여부에 관계없이 강력한 지원을 제공합니다.