echo date('Y-m-d H:i:s'); 輸出時間比本地時間(北京時間 UTC+8)慢 8 小時。
PHP 預設使用 **UTC(格林威治標準時間)**。中國位於東八區(UTC+8),故相差 8 小時。
; 找到 ;date.timezone
date.timezone = PRC
PRC 代表中華人民共和國,等同於 Asia/Shanghai。修改後**必須重啟 Web 伺服器**(Apache/Nginx + PHP-FPM)。
<?php
// 在所有日期時間函數之前呼叫
date_default_timezone_set('Asia/Shanghai');
// 或 PRC
echo date('Y-m-d H:i:s'); // 正確輸出北京時間
?>
ini_set('date.timezone', 'Asia/Shanghai');
<?php
echo '預設時區: ' . date_default_timezone_get() . PHP_EOL;
echo '當前時間: ' . date('Y-m-d H:i:s') . PHP_EOL;
echo '時間戳: ' . time() . PHP_EOL;
// 時間戳不受時區影響,永遠是 UTC 秒數
?>
date('Y-m-d H:i:s', time() + 8*3600) — 夏令時/閏秒會出錯,不可取CST — 歧義大(可能指中國/美國/澳洲標準時間),必須用 Asia/Shanghai// Laravel: config/app.php
'timezone' => 'Asia/Shanghai',
// Symfony: config/packages/framework.yaml
framework:
php_timezone: 'Asia/Shanghai'
// ThinkPHP: config/app.php
'default_timezone' => 'Asia/Shanghai',
**時區設定是專案初始化的必做項**。統一使用 Asia/Shanghai,在入口文件最早處設定,配合框架配置,徹底杜絕時間偏移 Bug。