현재 위치: > 최신 기사 목록> timezone_transitions_get의 타임 스탬프 형식 구문 분석

timezone_transitions_get의 타임 스탬프 형식 구문 분석

gitbox 2025-06-03

1. Timezone_Transitions_get의 개요

이 기능의 기본 사용 형태는 다음과 같습니다.

 $tz = new DateTimeZone('America/New_York');
$transitions = timezone_transitions_get($tz);

또는 다음과 같이 약화했습니다.

 $transitions = (new DateTimeZone('America/New_York'))->getTransitions();

반환 된 $ 전환은 배열이며 각 요소는 다음 필드를 포함하는 연관 배열입니다.

  • TS : 타임 스탬프 (정수)

  • 시간 : ISO 형식 시간 (문자열)

  • 오프셋 : 오프셋 (UTC에 대한 초 수)

  • ISDST : 일광 절약 시간 여부 (부울 가치)

  • ABBR : 현재 시간 약어 (예 : EDT 또는 EST)

이 기사에서 우리의 초점은 TS 필드, 즉 타임 스탬프에 있습니다.


2. 타임 스탬프 형식 분석

반환 된 데이터에서 TS는 UNIX 시대 이후의 초 수를 나타냅니다 (00:00:00 UTC, 1970 년 1 월 1 일). 긍정적이거나 부정적 일 수있는 정수입니다.

예를 들어, 다음 코드를 통해 변환 시간대를 얻고 인쇄합니다.

 $tz = new DateTimeZone('Europe/Paris');
$transitions = $tz->getTransitions();

foreach ($transitions as $transition) {
    echo "타임 스탬프:{$transition['ts']},해당 시간:{$transition['time']}\n";
}

출력은 비슷할 수 있습니다.

 타임 스탬프:-1830384000,해당 시간:1916-06-14T23:00:00+0000
타임 스탬프:-1689814800,해당 시간:1916-10-01T23:00:00+0000
...

알 수 있듯이, 타임 스탬프는 정수 형태로 표시되는 시점이며, 음수 값은 1970 년 이전의 시간을 나타냅니다.


3. 타임 스탬프를 읽을 수있는 시간 형식으로 변환하는 방법은 무엇입니까?

DateTime 클래스를 사용 하여이 변환을 처리 할 수 ​​있습니다.

 $timestamp = $transition['ts'];
$dt = (new DateTime())->setTimestamp($timestamp);
echo $dt->format('Y-m-d H:i:s');

기본적으로 생성 된 DateTime 객체는 현재 시간대에 있으며 수동으로 설정할 수도 있습니다.

 $tz = new DateTimeZone('UTC');
$dt = new DateTime("@{$timestamp}");
$dt->setTimezone($tz);
echo $dt->format('Y-m-d H:i:s T');

4. 실제 응용 프로그램 : 가장 가까운 시간대 변환을 표시하십시오

GetTransitions () 가 반환 한 목록에서 가장 최근의 변환을 필터링하여 현재 오프셋 및 일광 절약 시간 정보를 표시 할 수 있습니다.

 $tz = new DateTimeZone('Asia/Shanghai');
$transitions = $tz->getTransitions();

$now = time();
$recent = null;

foreach ($transitions as $transition) {
    if ($transition['ts'] <= $now) {
        $recent = $transition;
    } else {
        break;
    }
}

echo "가장 최근의 전환 시간은입니다:{$recent['time']},UTC 오프셋은입니다:{$recent['offset']} 두번째";

이 정보를 웹 API 형식으로 반환하려는 경우 다음 구조를 사용하여 JSON을 출력 할 수 있습니다.

 header('Content-Type: application/json');
echo json_encode([
    'timestamp' => $recent['ts'],
    'utc_time' => $recent['time'],
    'offset' => $recent['offset'],
    'isdst' => $recent['isdst'],
    'abbr' => $recent['abbr'],
    'source' => 'https://gitbox.net/timezone/transition'
]);