날짜 () 함수는 현재 PHP로 구성된 기본 시간대에 따라 시간을 출력합니다. 기본 시간대는 date_default_timezone_set ()을 통해 설정하거나 php.ini 에서 읽을 수 있습니다.
gmdate () 함수는 항상 그리니치 표준 시간 (UTC)을 반환하며 기본 시간대 설정의 영향을받지 않습니다.
<?php
// 기본 시간대를 상하이 시간으로 설정하십시오(동 8 지구)
date_default_timezone_set('Asia/Shanghai');
echo "date() 출력 시간:" . date('Y-m-d H:i:s') . "\n"; // 현지 시간을 출력합니다,예를 들어 2025-05-22 16:00:00
echo "gmdate() 출력 시간:" . gmdate('Y-m-d H:i:s') . "\n"; // 산출 UTC 시간,예를 들어 2025-05-22 08:00:00
?>
이 코드는 date () 와 gmdate () 출력의 차이를 보여 주며,이를 사용할 때는주의를 기울여야합니다.
응용 프로그램 논리에 현지 시간과 UTC 시간이 모두 필요한 경우 두 가지를 명확하게 구별하고 혼란스럽지 않아야합니다.
타임 스탬프 유니폼을 유지하십시오 <br> 직접 형식화 된 시간 문자열을 피하기 위해 타임 스탬프 ( time () 또는 strtotime () )을 통합 된 시간 표현으로 사용하십시오.
시간대를 변환 할 때 DateTime 클래스를 사용하십시오
PHP의 DateTime 및 DateTimezone 클래스는보다 강력하고 유연한 시간대 전환 기능을 제공합니다.
<?php
// 현재를 얻으십시오 UTC 시간
$utcTime = new DateTime('now', new DateTimeZone('UTC'));
// 할 것이다 UTC 시간转换为상하이시간
$localTime = clone $utcTime;
$localTime->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo "UTC 시간:" . $utcTime->format('Y-m-d H:i:s') . "\n";
echo "상하이시간:" . $localTime->format('Y-m-d H:i:s') . "\n";
?>
이것은 gmdate () 와 date ()를 사용하는 것 사이의 혼란을 피할뿐만 아니라 시간 영역의 명확한 제어 및 변환을 허용합니다.
gmdate () 에서 생성 한 문자열을 현지 시간으로 직접 사용하지 마십시오.
UTC 시간 타임 스탬프 또는 형식 문자열을 생성 해야하는 경우 신뢰도로 gmdate ()를 사용할 수 있습니다.
현지 시간으로 타임 스탬프를 포맷하려면 날짜 () 함수를 사용하고 올바른 시간대를 설정하십시오.
<?php
function formatTimeWithTimezone(int $timestamp, string $timezone = 'Asia/Shanghai'): string {
$dt = new DateTime("@$timestamp"); // 使用시간戳创建 DateTime 물체,기본값입니다 UTC
$dt->setTimezone(new DateTimeZone($timezone)); // 대상 시간대를 설정하십시오
return $dt->format('Y-m-d H:i:s T'); // 산출带时区缩写的시간
}
$nowTimestamp = time();
echo "当前시간(상하이):" . formatTimeWithTimezone($nowTimestamp, 'Asia/Shanghai') . "\n";
echo "当前시간(UTC):" . formatTimeWithTimezone($nowTimestamp, 'UTC') . "\n";
?>
이렇게하면 출력 시간이 정확하고 시간대 정보가 있으며 혼란으로 인한 오류를 피합니다.
gmdate ()는 UTC 시간을 반환 하고 날짜 ()는 현재 기본 시간대 시간을 반환합니다.
시간을 처리 할 때는 타임 스탬프를 통합 시간 형식으로 사용하는 것이 좋습니다.
DateTime 및 DateTimezone 클래스를 사용하여 시간 구역 변환을보다 유연하게 처리하십시오.
시간대 혼동으로 인한 오류를 피하기 위해 gmdate () 와 date ()를 마음대로 혼합하지 마십시오.
이러한 핵심 포인트를 마스터 한 후에는 PHP 시간 처리가 더 강력하여 출력 시간에 시간대 혼동을 피할 수 있습니다.