코딩 스쿨 PHP

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

PHP Timezones

PHP Timezones Reference: PHP에서 시간대 처리하기


PHP는 다양한 시간대(timezone)를 다룰 수 있도록 date_default_timezone_set() 함수와 DateTime 클래스를 제공합니다. 이를 통해 서버 시간과 사용자의 현지 시간을 처리하고, 특정 시간대를 기준으로 시간과 날짜를 계산할 수 있습니다. PHP는 세계 전역의 시간대를 지원하며, 이를 잘 활용하면 시간대 변환, 시간대에 맞춘 출력 등의 작업을 쉽게 수행할 수 있습니다.

이 가이드는 PHP에서 시간대를 처리하는 주요 함수와 시간대 설정 방법을 설명합니다.


1. PHP에서 시간대 설정

1.1 date_default_timezone_set()

이 함수는 PHP 스크립트에서 기본 시간대를 설정합니다. 설정된 시간대는 date(), time(), DateTime 클래스 등 시간과 날짜 관련 함수에서 사용됩니다.

  • 구문:

    bool date_default_timezone_set ( string $timezone_identifier )
    
    
  • 예시:

    <?php
    // 시간대 설정
    date_default_timezone_set('Asia/Seoul');
    
    // 현재 시간 출력
    echo date('Y-m-d H:i:s');  // 출력: 2024-10-10 15:23:45 (예시)
    ?>
    
    

1.2 date_default_timezone_get()

이 함수는 현재 설정된 기본 시간대를 반환합니다.

  • 구문:

    string date_default_timezone_get ( void )
    
    
  • 예시:

    <?php
    // 현재 설정된 시간대 가져오기
    echo date_default_timezone_get();  // 출력: Asia/Seoul
    ?>
    
    

2. PHP에서 시간대 변경

PHP에서는 날짜와 시간과 관련된 여러 시간대를 지원하며, 이를 필요에 따라 변경할 수 있습니다. PHP에서 지원하는 시간대 목록은 timezone_identifiers_list() 함수를 통해 확인할 수 있습니다.

2.1 timezone_identifiers_list()

이 함수는 PHP에서 사용할 수 있는 시간대 목록을 배열로 반환합니다.

  • 구문:

    array timezone_identifiers_list ( int $timezone_group = DateTimeZone::ALL )
    
    
  • 예시:

    <?php
    // PHP에서 사용할 수 있는 모든 시간대 출력
    $timezones = timezone_identifiers_list();
    print_r($timezones);
    ?>
    
    
  • 출력(일부):

    Array
    (
        [0] => Africa/Abidjan
        [1] => Africa/Accra
        [2] => Africa/Addis_Ababa
        ...
        [422] => America/New_York
        [423] => Asia/Seoul
        ...
    )
    
    

3. DateTime 클래스와 시간대

PHP의 DateTime 클래스는 시간대와 관련된 작업을 더욱 강력하게 수행할 수 있는 도구를 제공합니다. 이 클래스는 특정 시간대에 대한 날짜 및 시간을 설정하고 변환할 수 있는 기능을 제공합니다.

3.1 DateTime 클래스에서 시간대 설정

DateTime 객체를 생성할 때 시간대를 설정할 수 있습니다. 이를 통해 특정 시간대에 대한 날짜와 시간을 쉽게 계산할 수 있습니다.

  • 예시:

    <?php
    // 서울 시간 기준의 DateTime 객체 생성
    $datetime_seoul = new DateTime('now', new DateTimeZone('Asia/Seoul'));
    echo $datetime_seoul->format('Y-m-d H:i:s');  // 출력: 2024-10-10 15:23:45 (예시)
    ?>
    
    

3.2 DateTimeZone 클래스

DateTimeZone 클래스는 PHP에서 시간대를 표현하는 클래스입니다. 이 클래스는 특정 시간대의 표준 시간대 오프셋 등을 관리할 수 있습니다.

  • 구문:

    DateTimeZone::__construct ( string $timezone )
    
    
  • 예시:

    <?php
    // 뉴욕 시간대 정보 가져오기
    $timezone_ny = new DateTimeZone('America/New_York');
    
    // 현재 뉴욕의 시간대 오프셋 출력 (초 단위)
    $datetime = new DateTime('now', $timezone_ny);
    echo $timezone_ny->getOffset($datetime);  // 출력: -14400 (예시, 여름철 서머타임 적용 중)
    ?>
    
    

4. 시간대 변환

DateTime 객체를 사용하면 시간대를 쉽게 변환할 수 있습니다. 이는 서로 다른 시간대를 비교하거나 특정 시간대를 기준으로 시간을 변환할 때 유용합니다.

4.1 DateTime::setTimezone()

이 메서드는 DateTime 객체의 시간대를 다른 시간대로 변경합니다.

  • 구문:

    DateTime::setTimezone ( DateTimeZone $timezone )
    
    
  • 예시:

    <?php
    // 서울 시간 기준의 DateTime 객체 생성
    $datetime_seoul = new DateTime('now', new DateTimeZone('Asia/Seoul'));
    
    // 뉴욕 시간대로 변환
    $timezone_ny = new DateTimeZone('America/New_York');
    $datetime_seoul->setTimezone($timezone_ny);
    
    // 변환된 시간 출력
    echo $datetime_seoul->format('Y-m-d H:i:s');  // 출력: 2024-10-09 02:23:45 (예시)
    ?>
    
    

4.2 서로 다른 시간대 비교

두 시간대의 날짜 및 시간을 비교할 때 DateTime 클래스는 매우 유용합니다. 서로 다른 시간대를 변환하지 않고도 비교할 수 있습니다.

  • 예시:

    <?php
    $datetime_seoul = new DateTime('2024-10-10 15:00:00', new DateTimeZone('Asia/Seoul'));
    $datetime_ny = new DateTime('2024-10-10 02:00:00', new DateTimeZone('America/New_York'));
    
    if ($datetime_seoul > $datetime_ny) {
        echo "서울의 시간이 뉴욕보다 나중입니다.";
    } else {
        echo "뉴욕의 시간이 서울보다 나중입니다.";
    }
    ?>
    
    

5. 시간대 기반의 날짜와 시간 출력

PHP는 시간대를 기준으로 다양한 형식으로 날짜와 시간을 출력할 수 있습니다. 특히, date(), time(), strftime() 등의 함수를 통해 기본 시간대를 적용하거나 변환된 시간대로 출력할 수 있습니다.

5.1 date()

date() 함수는 기본 시간대에 따라 현재 시간을 형식화하여 출력합니다.

  • 구문:

    string date ( string $format [, int $timestamp = time() ] )
    
    
  • 예시:

    <?php
    date_default_timezone_set('Asia/Seoul');
    echo date('Y-m-d H:i:s');  // 출력: 2024-10-10 15:23:45 (예시)
    ?>
    
    

5.2 strftime()

strftime() 함수는 시스템의 로케일 설정에 따라 시간과 날짜를 출력할 수 있습니다.

  • 구문:

    string strftime ( string $format [, int $timestamp = time() ] )
    
    
  • 예시:

    <?php
    setlocale(LC_TIME, 'ko_KR.UTF-8');  // 한국어 로케일 설정
    date_default_timezone_set('Asia/Seoul');
    echo strftime('%Y년 %m월 %d일 %H시 %M분 %S초');  // 출력: 2024년 10월 10일 15시 23분 45초 (예시)
    ?>
    
    

6. UTC와 시간대

PHP에서는 UTC(협정 세계시)를 기준으로 날짜와 시간을 관리할 수 있습니다. UTC는 전 세계에서 동일한 시간을 나타내므로, 이를 기준으로 시간대를 변환하거나 글로벌 애플리케이션에서 시간을 동기화하는 데 유용합니다.

6.1 UTC 시간 설정

UTC 시간은 DateTimeZone 클래스를 사용하여 설정할 수 있습니다.

  • 예시:

    <?php
    // UTC 시간으로 DateTime 객체 생성
    $datetime_utc = new DateTime('now', new DateTimeZone('UTC'));
    echo $datetime_utc->format('Y-m-d H:i:s');  // 출력: 2024-10-10 06:23:45 (예시)
    ?>
    
    

6.2 UTC로 변환

다른 시간대의 시간을 UTC로 변환할 때도 DateTime 클래스의 setTimezone() 메서드를 사용할 수 있습니다.

  • 예시:

    <?php
    $datetime_seoul = new DateTime('2024-10-10 15:00:00', new DateTimeZone('Asia/Seoul'));
    
    // UTC로 변환
    $datetime_seoul->setTimezone(new DateTimeZone('UTC'));
    echo $datetime_seoul->format('Y-m-d H:i:s');
    

요약

PHP에서 시간대 관련 작업은 매우 중요한 역할을 하며, PHP는 이를 처리할 수 있는 다양한 도구와 클래스를 제공합니다. **date_default_timezone_set()**을 통해 기본 시간대를 설정하거나, DateTimeDateTimeZone 클래스를 사용하여 시간대 간의 변환 및 비교를 쉽게 수행할 수 있습니다. PHP는 세계 전역의 시간대를 지원하므로, 이를 활용해 글로벌 애플리케이션을 더욱 정확하게 관리할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com