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

PHP timezone_transitions_get() 함수 완벽 가이드 – 시간대 전환 정보 조회 방법

PHP의 timezone_transitions_get() 함수는 지정된 시간대(timezone)에 대한 모든 전환(transitions) 정보를 반환하는 함수입니다. 이 함수를 사용하면 특정 시간대에서 서머타임(DST) 적용 여부, UTC 오프셋 변경 이력 등을 확인할 수 있습니다.

문법(Syntax)

timezone_transitions_get(obj)

매개변수(Parameters)

  • obj − DateTimeZone 객체. 조회하려는 시간대 정보를 담고 있는 객체입니다.

반환값(Return)

timezone_transitions_get() 함수는 성공 시 숫자 인덱스 배열을 반환하며, 각 요소는 연관 배열 형태로 모든 시간대 전환 정보를 포함합니다. 실패할 경우 FALSE를 반환합니다.

예제 1

다음은 Asia/Colombo(콜롬보) 시간대의 전환 정보를 조회하는 예제입니다.

<?php
$tz = timezone_open('Asia/Colombo');
$res = timezone_transitions_get($tz);
print_r(array_slice($res, 0, 2));
?>

출력 결과

Array (
    [0] => Array (
        [ts] => -9223372036854775808
        [time] => -292277022657-01-27T08:29:52+0000
        [offset] => 19164
        [isdst] =>
        [abbr] => LMT
    )
    [1] => Array (
        [ts] => -2147483648
        [time] => 1901-12-13T20:45:52+0000
        [offset] => 19172
        [isdst] =>
        [abbr] => MMT
    )
)

출력 결과에서 각 키가 의미하는 바는 다음과 같습니다.

  • ts: 유닉스 타임스탬프 값
  • time: 해당 전환이 발생한 날짜와 시간
  • offset: UTC 기준 오프셋(초 단위)
  • isdst: 서머타임(DST) 적용 여부
  • abbr: 시간대 약어(예: LMT, MMT)

예제 2

이번에는 Europe/Paris(파리) 시간대의 전환 정보를 조회해 보겠습니다.

<?php
$tz = timezone_open('Europe/Paris');
$res = timezone_transitions_get($tz);
print_r(array_slice($res, 0, 2));
?>

출력 결과

Array (
[0] => Array (
    [ts] => -9223372036854775808
    [time] => -292277022657-01-27T08:29:52+0000
    [offset] => 561
    [isdst] =>
    [abbr] => LMT
)
[1] => Array (
    [ts] => -2147483648
    [time] => 1901-12-13T20:45:52+0000
    [offset] => 561
    [isdst] =>
    [abbr] => PMT
)
)

정리

timezone_transitions_get() 함수는 시간대별 과거 및 미래의 전환 이력을 한 번에 가져올 수 있는 유용한 함수입니다. 예제에서처럼 array_slice()를 함께 사용하면 방대한 전환 데이터 중 필요한 일부만 추출하여 확인할 수 있습니다. 서머타임 처리나 다국적 서비스의 시간대 계산 로직을 구현할 때 활용도가 높습니다.