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()를 함께 사용하면 방대한 전환 데이터 중 필요한 일부만 추출하여 확인할 수 있습니다. 서머타임 처리나 다국적 서비스의 시간대 계산 로직을 구현할 때 활용도가 높습니다.