Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP timezone_abbreviations_list() 함수 사용법 – 시간대 약어 목록 조회하기

개요

PHP의 timezone_abbreviations_list() 함수는 서머타임(DST) 적용 여부, UTC 기준 오프셋(초 단위), 그리고 시간대 식별자(timezone_id)를 포함하는 연관 배열을 반환합니다. 전 세계 모든 시간대 약어에 대한 상세 정보를 한 번에 조회할 수 있어, 다국어·다지역 서비스에서 시간대 처리 로직을 구현할 때 유용하게 활용됩니다.

참고로 이 함수는 객체 지향 방식인 DateTimeZone::listAbbreviations()와 완전히 동일한 결과를 반환합니다.

문법

timezone_abbreviations_list()

매개변수

이 함수는 별도의 매개변수를 받지 않습니다.

반환 값

성공 시 시간대 약어 정보가 담긴 배열(array)을 반환하고, 실패 시 FALSE를 반환합니다.

반환되는 배열의 각 항목은 다음과 같은 구조를 가집니다.

  • dst – 서머타임(Daylight Saving Time) 적용 여부
  • offset – UTC 기준 시간 오프셋(초 단위)
  • timezone_id – 해당 시간대의 식별자

예제 1

다음은 "acst" 약어에 해당하는 시간대 정보를 조회하는 예제입니다. 절차적 함수 방식과 DateTimeZone 클래스 방식, 두 가지를 함께 비교해 보겠습니다.

<?php
$timezone_abbreviations = timezone_abbreviations_list();
print_r($timezone_abbreviations["acst"]);
echo "----------------------------------------------\n";
# 두 번째 방식: DateTimeZone 클래스 활용
$timezone_abbreviations = DateTimeZone::listAbbreviations();
print_r($timezone_abbreviations["acst"]);
?>

출력 결과

Array (
    [0] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Porto_Acre
    )
    [1] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Adelaide
    )
    [2] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Adelaide
    )
    [3] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Eirunepe
    )
    [4] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Rio_Branco
    )
    ...
)
----------------------------------------------
Array (
    [0] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Porto_Acre
    )
    ...
)

출력을 보면 두 방식 모두 동일한 결과를 반환합니다. 하나의 약어("acst")에 여러 시간대가 매핑되어 있으며, 같은 시간대라도 서머타임 적용 여부(dst)나 오프셋 값(offset)이 다른 항목이 존재할 수 있습니다. 예를 들어 호주 애들레이드(Australia/Adelaide)는 32400초(UTC+9)와 34200초(UTC+9.5) 두 가지 오프셋으로 나타납니다.

예제 2

이번에는 "act" 약어로 조회하는 예제입니다.

<?php
$res = timezone_abbreviations_list();
print_r($res["act"]);
?>

출력 결과

Array
(
    [0] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Porto_Acre
    )
    [1] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Eirunepe
    )
    [2] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Rio_Branco
    )
    [3] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => Brazil/Acre
    )
)

정리

timezone_abbreviations_list() 함수는 매개변수 없이 호출하며, 성공 시 DST 여부·오프셋·시간대 ID를 담은 연관 배열을 반환합니다. 특정 지역의 가능한 모든 시간대 오프셋을 확인하거나, 사용자에게 시간대 선택 목록을 제공하는 기능을 만들 때 활용하면 좋습니다.