date()、strtotime() 輸出時間比本地時間少 8 小時(GMT/UTC 時間),報警:PHP Warning: strtotime(): It is not safe to rely on the system's timezone settings...
PHP 5.1+ 引入 date.timezone 配置,默認關閉,導致所有日期函數使用 UTC 時間。
; 找到並取消註釋
date.timezone = PRC
; 或具體城市
date.timezone = Asia/Shanghai
date.timezone = Asia/Chongqing
date.timezone = Asia/Hong_Kong
date.timezone = Asia/Taipei
| 標識符 | 地區 | UTC偏移 |
|---|---|---|
| PRC | 中國大陸 | +08:00 |
| Asia/Shanghai | 上海 | +08:00 |
| Asia/Chongqing | 重慶 | +08:00 |
| Asia/Urumqi | 烏魯木齊 | +06:00(實際+08:00) |
| Asia/Hong_Kong | 香港 | +08:00 |
| Asia/Macao | 澳門 | +08:00 |
| Asia/Taipei | 台北 | +08:00 |
<?php
// 放在所有日期函數調用之前
date_default_timezone_set('Asia/Shanghai');
// 或 PRC
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s'); // 正確輸出本地時間
?>
ini_set('date.timezone', 'Asia/Shanghai');
<?php
echo "配置時區: " . date_default_timezone_get() . "<br>";
echo "當前時間: " . date('Y-m-d H:i:s') . "<br>";
echo "時間戳: " . time() . "<br>";
echo "strtotime測試: " . date('Y-m-d H:i:s', strtotime('2024-01-01 12:00:00')) . "<br>";
?>
date_default_timezone_set()SET time_zone = '+08:00' (MySQL)config/app.php → timezone)