PHP 5.1+ 要求顯式設置時區,否則默認 UTC 導致時間偏移(中國地區相差 8 小時)。提供三種設置方法及常用時區標識符。
echo date("Y-m-d H:i:s"); // 輸出 06:36:06,實際 14:36
// 原因:默認使用 GMT/UTC 時間
<?php
date_default_timezone_set('PRC'); // 中國標準時間
// 或
date_default_timezone_set('Asia/Shanghai');
// 或
ini_set('date.timezone', 'Asia/Shanghai');
; 找到 date.timezone,去掉分號並設置
date.timezone = "PRC"
; 或
date.timezone = "Asia/Shanghai"
修改後重啟 PHP-FPM/Apache 生效。
date_default_timezone_set("Etc/GMT"); // 格林威治時間
date_default_timezone_set("Etc/GMT+8"); // 比 GMT 慢 8 小時(注意符號反直覺)
date_default_timezone_set("Etc/GMT-8"); // 比 GMT 快 8 小時
| 標識符 | 地區 |
|---|---|
| Asia/Shanghai | 上海 |
| Asia/Chongqing | 重慶 |
| Asia/Urumqi | 烏魯木齊 |
| Asia/Hong_Kong | 香港 |
| Asia/Macao | 澳門 |
| Asia/Taipei | 台北 |
| Asia/Singapore | 新加坡 |
| PRC | 中華人民共和國(推薦) |
<?php
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s'); // 應與服務器本地時間一致
bool date_default_timezone_set(string $timezone_identifier)
// 返回值:永遠返回 true(即使時區無效)
// PHP 5.1.0+ 時區無效會產生 E_NOTICE