현재 위치: > 최신 기사 목록> 모든 타임 존에 대한 UTC 오프셋을 가져 와서 Timezone_identifiers_List를 통해 표시하는 방법은 무엇입니까? 자세한 운영 안내서

모든 타임 존에 대한 UTC 오프셋을 가져 와서 Timezone_identifiers_List를 통해 표시하는 방법은 무엇입니까? 자세한 운영 안내서

gitbox 2025-06-30

PHP에서는 내장 된 기능 Timezone_identifiers_List를 통해 모든 유효한 시간대 식별자를 얻을 수 있습니다. 이 함수는 모든 시간 영역 식별자를 포함하는 배열을 반환합니다. 다음으로 DateTimezone 클래스를 사용하여 각 시간대의 UTC 오프셋을 계산할 수 있습니다. 이 기사에서는 이러한 기능을 통해 모든 시간 영역에 대한 UTC 오프셋을 얻는 방법을 자세히 설명하고 표시합니다.

1 단계 : 모든 시간대 식별자를 가져옵니다

먼저 모든 유효한 시간대 식별자를 가져와야합니다. timezone_identifiers_list () 함수를 사용하여 구현할 수 있습니다. 이 함수는 매개 변수를 허용하지 않으며 모든 시간 영역 식별자가 포함 된 배열을 반환합니다. 시간대 식별자를 얻는 코드는 다음과 같습니다.

 <span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_identifiers_list</span></span><span>();
</span></span>

2 단계 : 시간 구역 식별자에 대한 반복

시간대 목록을 얻은 후이 시간대 식별자를 반복하고 각 시간대에 대한 UTC 오프셋을 계산해야합니다. 이를 위해 DateTimezone 클래스를 사용하여 시간대 객체를 생성하고 getOffset () 메소드를 사용하여 오프셋을 얻을 수 있습니다. getoffset () 메소드는 오프셋을 초 안에 반환합니다.

 <span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
    </span><span><span class="hljs-comment">// 시간대 객체를 만듭니다</span></span><span>
    </span><span><span class="hljs-variable">$tz</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-variable">$timezone</span></span><span>);
    
    </span><span><span class="hljs-comment">// 현재 시간을 얻으십시오 UTC 오프셋(단위:두번째)</span></span><span>
    </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-variable">$tz</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getOffset</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-variable">$tz</span></span><span>));

    </span><span><span class="hljs-comment">// 将오프셋转换为小时和分钟的格式</span></span><span>
    </span><span><span class="hljs-variable">$offset_hours</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$offset</span></span><span>, </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// 시간을 계산하십시오</span></span><span>
    </span><span><span class="hljs-variable">$offset_minutes</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>((</span><span><span class="hljs-variable">$offset</span></span><span> % </span><span><span class="hljs-number">3600</span></span><span>) / </span><span><span class="hljs-number">60</span></span><span>); </span><span><span class="hljs-comment">// 분 수를 계산하십시오</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-variable">$timezone</span></span><span> . </span><span><span class="hljs-string">' UTC '</span></span><span> . (</span><span><span class="hljs-variable">$offset_hours</span></span><span> &gt;= </span><span><span class="hljs-number">0</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-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$offset_hours</span></span><span>) . </span><span><span class="hljs-string">':'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$offset_minutes</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

3 단계 : UTC 오프셋 형식

위의 코드에서는 getoffset ()을 통해 UTC 오프셋의 초 수를 얻습니다. 오프셋을보다 친절하게 표시하려면 시간 및 분 형식으로 변환해야합니다. 오프셋의 단위는 초입니다. 3600으로 나누어서 시간을 얻을 수 있습니다. 그런 다음 나머지를 사용하여 분 수를 계산할 수 있습니다. 마지막으로 시간대와 해당 오프셋을 출력합니다.

완전한 코드 예제

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-comment">// 모든 시간대 식별자를 가져옵니다</span></span><span>
</span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_identifiers_list</span></span><span>();

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
    </span><span><span class="hljs-comment">// 시간대 객체를 만듭니다</span></span><span>
    </span><span><span class="hljs-variable">$tz</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-variable">$timezone</span></span><span>);
    
    </span><span><span class="hljs-comment">// 현재 시간을 얻으십시오 UTC 오프셋(단위:두번째)</span></span><span>
    </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-variable">$tz</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getOffset</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-variable">$tz</span></span><span>));

    </span><span><span class="hljs-comment">// 将오프셋转换为小时和分钟的格式</span></span><span>
    </span><span><span class="hljs-variable">$offset_hours</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$offset</span></span><span>, </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// 시간을 계산하십시오</span></span><span>
    </span><span><span class="hljs-variable">$offset_minutes</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>((</span><span><span class="hljs-variable">$offset</span></span><span> % </span><span><span class="hljs-number">3600</span></span><span>) / </span><span><span class="hljs-number">60</span></span><span>); </span><span><span class="hljs-comment">// 분 수를 계산하십시오</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-variable">$timezone</span></span><span> . </span><span><span class="hljs-string">' UTC '</span></span><span> . (</span><span><span class="hljs-variable">$offset_hours</span></span><span> &gt;= </span><span><span class="hljs-number">0</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-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$offset_hours</span></span><span>) . </span><span><span class="hljs-string">':'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$offset_minutes</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

출력 예제

위의 코드를 실행하면 다음 출력이 표시됩니다.

 <span><span>Africa/Abidjan UTC +0:00
Africa/Accra UTC +0:00
Africa/Addis_Ababa UTC +3:00
Africa/Algiers UTC +1:00
Africa/Asmara UTC +3:00
</span><span><span class="hljs-meta prompt_">...</span></span><span>
Asia/Kolkata UTC +5:30
Asia/Kuala_Lumpur UTC +8:00
Asia/Kuwait UTC +3:00
</span><span><span class="hljs-meta prompt_">...</span></span><span>
</span></span>

각 행에는 시간대와 해당 UTC 오프셋이 표시되므로 각 시간대 간의 시간 차이를 볼 수 있습니다.

4 단계 : 최적화 및 예방 조치

  1. 일광 절약 시간을 고려하십시오 : 특정 날짜에 시간대에 대한 오프셋을 얻으려면 새 DateTime ( "now", $ tz)을 사용하는 대신 DateTime 객체에 대한 특정 시간을 지정할 수 있습니다. 이렇게하면 일광 절약 시간 (DST)의 영향을 고려할 수 있습니다.

  2. 날짜 및 시간 처리 : getoffset () 메소드는 UTC 시간에 비해 오프셋을 반환합니다. 일반적으로 시간 차이를 판단하는 데 매우 유용하지만 날짜와 시간 변환이 관련된 경우 DateTime 객체와 더 많은 작업을 수행해야 할 수도 있습니다.

  3. 출력 형식 :이 예제의 출력 형식은 "UTC +/- Time : Minters"형식이며, 예를 들어 날짜 또는 시간대 세부 정보 추가와 같은 필요에 따라 사용자 정의 할 수 있습니다.

요약

PHP의 Timezone_Indifiers_List 함수 및 DateTimezone 클래스를 통해 모든 시간 영역에 대한 UTC 오프셋을 쉽게 얻을 수 있습니다. 이 기능은 시간 차이를 정확하게 계산 해야하는 시간 영역 및 프로젝트의 응용 프로그램에서 매우 실용적입니다. 이 기사의 자세한 운영 안내서가 시간대에 대한 UTC 오프셋을 얻고 표시하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다.