현재 위치: > 최신 기사 목록> timezone_identifiers_list 기능 출력 시간대 정보에 일광 절약 시간이 포함되지 않는 문제를 해결하는 방법은 무엇입니까?

timezone_identifiers_list 기능 출력 시간대 정보에 일광 절약 시간이 포함되지 않는 문제를 해결하는 방법은 무엇입니까?

gitbox 2025-06-10

PHP에서 Timezone_Indifiers_List () 함수는 알려진 모든 시간대 식별자 목록을 얻는 데 사용되며, 이는 시간 및 시간 영역 관련 기능을 처리 할 때 개발자가 사용할 수있는 편리합니다. 이 기능은 "아시아/상하이" , "유럽/런던" 등과 같은 시간대 이름을 포함하는 배열을 반환합니다. 그러나 많은 개발자들은이 기능을 사용하여 직접 얻은 시간대 목록이 DST (Daylight Saving Time)의 시간대가 포함되어 있는지 여부를 명확하게 구별 할 수 없다는 것을 발견했습니다.

이 기사는이 문제의 근본 원인과 일광 절약 시간이 시간대에서 지원되는지 여부를 프로그래밍 방식으로 결정하고 해결하는 방법에 대해 자세히 설명합니다.


1. 문제 배경

Timezone_Indifiers_List ()는 단순히 시간대의 이름을 나열하며 시간대가 일광 절약 시간을 위해 활성화되어 있는지 여부는 알려주지 않습니다. 예를 들어, "Europe/London"은 일광 절약 시간 조정을 보유하고 "아시아/상하이"는 그렇지 않습니다. 이 기능을 사용하여 얻은 목록을 구별 할 수 없습니다.

이 시간대 문자열을 직접 사용하여 일광 절약 시간 판단을하는 경우 프로그램의 시간 오류로 인해 일광 절약 시간 또는 잘못된 시간 계산을 전환 할 수 있습니다.


2. 솔루션

시간대가 일광 절약 시간을 지원하는지 여부를 결정하려면 PHP의 DateTimezone 클래스 및 DateTime 클래스의 협력에 의존해야합니다. 아이디어는 다음과 같습니다.

  1. 각 시간대 영역 식별자에 대해 시간 객체는 여름 시간 (예 : 7 월)과 겨울 (예 : 1 월)의 두 시점에서 생성됩니다.

  2. DateTimezone :: getOffset () 메소드를 통해이 두 시점에서 UTC 오프셋이 동일인지 비교하십시오.

  3. 오프셋이 다르면 시간대가 일광 절약 시간을 지원한다는 것을 의미합니다. 그렇지 않으면 지원되지 않습니다.


3. 샘플 코드

다음은 일광 절약 시간을 지원하는 시간대 목록을 필터링하는 방법을 보여주는 PHP 코드 예제입니다.

 <?php
$allTimezones = timezone_identifiers_list();

$dstTimezones = [];

foreach ($allTimezones as $timezone) {
    $tz = new DateTimeZone($timezone);

    // 겨울 시간을하세요:1달1낮
    $winter = new DateTime('2023-01-01', $tz);
    // 여름 시간을 보냅니다:7달1낮
    $summer = new DateTime('2023-07-01', $tz);

    // 오프셋 초를 얻습니다
    $winterOffset = $tz->getOffset($winter);
    $summerOffset = $tz->getOffset($summer);

    if ($winterOffset !== $summerOffset) {
        // 다른 오프셋,여름 시간이 있음을 나타냅니다
        $dstTimezones[] = $timezone;
    }
}

// 일광 절약 시간을 지원하는 출력 시간대
echo "<pre>";
print_r($dstTimezones);
echo "</pre>";
?>

이 코드는 "Europe/London" , "America/New_York" 등과 같은 일광 절약 시간 조정이 포함 된 모든 시간대 식별자를 출력합니다.


4. 요약

  • Timezone_Indifiers_List ()는 시간대 목록 만 얻을 수 있으며 일광 절약 시간이 지원되는지 여부를 구별하지 않습니다.

  • 동일한 시간대의 다른 시점에서 UTC 오프셋을 비교하면 일광 절약 시간이 활성화되는지 정확하게 판단 할 수 있습니다.

  • 시간 구역에 걸친 시간 계산 및 프레젠테이션과 관련하여 일광 절약 시간 지원에 대한 합리적인 판단은 많은 시간 혼란을 피할 수 있습니다.

이 기사를 통해 개발자는 시간 처리 로직을보다 정확하게 제어하여 일광 절약 시간 스위치 중에 프로그램이 여전히 올바르게 실행되도록 할 수 있습니다.