首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 解決當前時間差 8 小時問題的完整指南

     編輯:PHP 相關知識

在 PHP 開發中,經常會遇到 date() 函數輸出的時間與實際本地時間相差 8 小時的情況。這是因為 PHP 5.1.0 版本起在 php.ini 中新增了 date.timezone 選項,預設情況下未啟用,導致所有時間函數輸出的均為格林威治標準時間 (GMT),而北京時間 (UTC+8) 恰好相差 8 小時。

三種解決方案

方法一:降級 PHP 版本(不推薦)

使用 PHP 5.1 以下版本可避開此問題,但這意味著放棄新版本的安全更新與功能改進,生產環境極不建議採用。

方法二:在代碼中動態設定時區(推薦)

若無法修改 php.ini(如共享主機環境),可在所有時間相關代碼執行前調用:

<?php
date_default_timezone_set('Asia/Shanghai'); // 中國大陸
// date_default_timezone_set('Asia/Hong_Kong'); // 香港
// date_default_timezone_set('Asia/Taipei');    // 台北
// date_default_timezone_set('Asia/Macao');     // 澳門
// date_default_timezone_set('Asia/Singapore'); // 新加坡
echo date("Y-m-d H:i:s"); // 現在輸出正確的本地時間
?>

方法三:修改 php.ini 永久生效(最佳實踐)

  1. 打開 php.ini,搜尋 date.timezone
  2. 去掉行首分號 ; 取消註釋
  3. 在等號後填入對應時區標識符,例如 date.timezone = Asia/Shanghai
  4. 重啟 Web 服務 (Apache / Nginx / IIS) 使配置生效

常用亞洲時區標識符對照表

地區時區標識符
中國大陸 (北京時間)Asia/Shanghai
香港Asia/Hong_Kong
台北Asia/Taipei
澳門Asia/Macao
新加坡Asia/Singapore

提示: 方法三屬一次設定、永久生效,適合擁有服務器控制權的項目;方法二靈活度高,適合無法修改配置文件的場景。建議在項目初始化文件 (如 config.php、bootstrap.php) 中統一調用 date_default_timezone_set(),確保全站時間一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved