PHP의 시간대 문제를 처리하는 것은 특히 응용 프로그램이 전 세계 사용자를 대상으로하거나 여러 시간 영역이있는 서버에 배포 될 때 중요한 작업입니다. date_default_timezone_set () 및 date_timezone_get () 은 시간대 관리에 PHP에 사용되는 두 가지 중요한 기능입니다. 그들은 각각 다른 역할을합니다. 합리적인 사용은 시간 처리의 정확성을 보장 할 수 있습니다.
이 기능의 기능은 현재 스크립트의 기본 시간대를 설정하는 것입니다. 날짜 () , time () 및 기타 함수를 사용하여 생성 된 모든 시간은이 시간 영역에 따라 계산됩니다.
<?php
// 기본 시간대를 도쿄로 설정하십시오
date_default_timezone_set('Asia/Tokyo');
echo date('Y-m-d H:i:s');
// 산출:2025-05-26 16:45:30(도쿄 시간을 가정합니다)
?>
실제 개발에서, 기본 시간대는 응용 프로그램의 초기화 파일에서 균일하게 설정하여 전체 응용 프로그램의 시간 동작이 일관되도록 할 수 있습니다.
위의 전역 기본 설정과 달리 Date_Timezone_get () 는 주로 DateTime 객체에서 현재 설정 시간대 정보를 추출하는 데 사용됩니다. 이 기능은 사용자 기본 설정에 따라 시간을 처리하려는 경우 현지 시간 관리에 더 적합합니다.
<?php
$date = new DateTime('now', new DateTimeZone('Europe/Paris'));
$timezone = date_timezone_get($date);
echo $timezone->getName();
// 산출:Europe/Paris
?>
이 함수는 DateTimezone 객체를 반환하여 오프셋과 같은 시간대에 대한 자세한 정보를 얻기 위해 메소드를 계속 호출 할 수 있습니다.
실제 애플리케이션에서는 서버와 사용자가있는 다른 시간 영역에 따라 시간을 변환해야 할 수도 있습니다. 예를 들어, 사용자가 개인 설정에서 시간대를 선택하면 사용자 시간대에 시간을 표시해야하며 데이터베이스 레코드는 서버의 기본 시간대를 채택합니다.
<?php
// 서버 기본 시간대(UTC)
date_default_timezone_set('UTC');
// 데이터베이스에서 가져 오십시오 UTC 시간
$utcTime = '2025-05-26 08:00:00';
$date = new DateTime($utcTime, new DateTimeZone('UTC'));
// 사용자 선호 시간 구역
$userTimezone = new DateTimeZone('America/New_York');
$date->setTimezone($userTimezone);
echo '用户本地시간:' . $date->format('Y-m-d H:i:s');
// 산출:用户本地시간:2025-05-26 04:00:00
?>
이 코드는 date_default_timezone_set () 로 기본 환경을 설정하는 방법을 명확하게 보여준 다음 DateTime 및 Date_timezone_get ()을 통해 객체 수준 시간 영역 관리를 구현합니다.
때로는 현재 스크립트 실행 중의 기본 시간대를 확인해야하며 Date_Default_Timezone_get () 를 통해 얻을 수 있습니다.
<?php
echo date_default_timezone_get();
// 산출:UTC(이전 설정이 있다고 가정하십시오 UTC)
?>
이는 디버깅 및 로그 출력과 같은 기능에 특히 유용하여 시간대 설정이 예상대로 보장됩니다.
다중 영역을 지원하는 응용 프로그램을 구축 할 때는 다음과 같이 권장됩니다.
UTC는 모든 데이터베이스 시간 레코드에 균일하게 사용됩니다.
사용자 입력 시간을 받으면 UTC 스토리지로 변환되며 표시되면 사용자 시간 영역으로 변환됩니다.
간단한 문자열 작업 대신 DATETIME 및 DATETIMEZONE 객체를 사용하십시오.
또한 외부 서비스 또는 구성과 결합하여 사용자가 시간대를 자유롭게 선택하고 설정을 지속 할 수 있습니다.