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

PHP date_default_timezone_set() 함수 완벽 가이드 – 기본 시간대 설정 방법

PHP에서 날짜와 시간을 다룰 때 시간대(Timezone) 설정은 매우 중요합니다. 서버마다 기본 시간대가 다르기 때문에, 의도하지 않은 시간이 출력되거나 저장될 수 있습니다. 이때 사용하는 것이 바로 date_default_timezone_set() 함수입니다.

date_default_timezone_set() 함수는 스크립트 전체에서 사용할 기본 시간대를 설정하는 역할을 합니다. 이 함수로 시간대를 지정하면 이후 호출되는 모든 날짜·시간 관련 함수(date(), strtotime() 등)가 해당 시간대를 기준으로 동작합니다.

문법 (Syntax)

date_default_timezone_set(timezone)

매개변수 (Parameters)

  • timezone − 사용할 시간대를 지정합니다. 예를 들어 "UTC", "Asia/Seoul", "Europe/Paris" 같은 형식으로 입력할 수 있습니다. 유효한 시간대 목록은 PHP 공식 문서에서 확인할 수 있습니다.

반환값 (Return)

date_default_timezone_set() 함수는 전달된 시간대가 유효하지 않으면 FALSE를 반환하고, 유효하면 TRUE를 반환합니다. 따라서 잘못된 시간대 문자열을 넘겼는지 검사할 때도 활용할 수 있습니다.

예제 1: 기본 시간대 설정하기

다음은 "Asia/Kolkata"(인도 콜카타) 시간대를 기본값으로 설정한 뒤, 실제로 적용되었는지 확인하는 예제입니다.

<?php
   date_default_timezone_set("Asia/Kolkata");
   echo date_default_timezone_get();
?>

출력 결과

Asia/Kolkata

date_default_timezone_get() 함수는 현재 설정된 기본 시간대를 반환하므로, 위와 같이 설정한 값이 정상적으로 적용된 것을 확인할 수 있습니다.

예제 2: php.ini 설정값과 비교하기

다음 예제는 코드에서 설정한 시간대와 php.ini 파일의 date.timezone 설정값을 비교하는 방법을 보여줍니다.

<?php
   date_default_timezone_set('Asia/Singapore');
   $obj = date_default_timezone_get();
   if (strcmp($obj, ini_get('date.timezone'))){
      echo 'No match!';
   } else {
      echo 'Match!';
   }
?>

출력 결과

No match!

코드 내에서 date_default_timezone_set()으로 설정한 시간대는 php.ini의 date.timezone 설정을 변경하지 않으므로, 두 값이 다르면 "No match!"가 출력됩니다. 즉, 이 함수는 런타임에만 적용되며 서버 전역 설정에는 영향을 주지 않습니다.

정리

date_default_timezone_set() 함수는 PHP 스크립트의 기본 시간대를 런타임에 설정하는 간단하면서도 필수적인 함수입니다. 한국 사용자를 대상으로 하는 서비스라면 "Asia/Seoul"을 설정해 주는 것이 좋으며, 시간대 오류로 인한 데이터 불일치를 방지할 수 있습니다.