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

PHP 默認時區設置完整指南(PHP 5.1+)

     編輯:PHP 綜合知識

PHP 5.1 版本起強制要求設置默認時區,否則會觸發 E_WARNING。本文匯總三種設置方法與驗證方式。

方法一:修改 php.ini(全局永久生效)

  1. 找到 date.timezone 行
  2. 去掉前面分號 ;
  3. 設置為目標時區,如:date.timezone = Asia/Shanghai
  4. 重啟 Web 服務器(Apache/Nginx/PHP-FPM)

方法二:代碼中動態設置(項目級/腳本級)

<?php
// 必須在任何日期時間函數調用前執行
date_default_timezone_set("Asia/Shanghai");

// 推薦放在項目入口文件或公共配置文件最頂部
?>

常用中國時區標識符:

  • Asia/Shanghai(北京時間,推薦)
  • Asia/Chongqing
  • Asia/Harbin
  • PRC(中國別名)

方法三:運行時配置(臨時覆蓋)

ini_set('date.timezone', 'Asia/Shanghai');

驗證當前時區設置

<?php
phpinfo();
// 在 Date 區塊查找 "Default timezone" 值
?>
或直接輸出:
echo date_default_timezone_get(); // 輸出如:Asia/Shanghai
echo date('Y-m-d H:i:s');         // 直接看時間是否正確

完整時區列表獲取

print_r(DateTimeZone::listIdentifiers());

最佳實踐建議

  1. 生產環境:php.ini 統一設置 + 代碼入口再次確認(雙重保險)
  2. 開發環境:代碼中設置,方便切換測試
  3. 框架項目:在框架啟動引導文件中集中設置(如 Laravel config/app.php、ThinkPHP config.php)
  4. 避免:在每個腳本頂部重複設置,維護困難

常見問題

現象原因解決
時間相差 8 小時默認 UTC 時區設置 Asia/Shanghai
Warning: date()... timezone settings未設置時區任意方法設置即可
設置無效php.ini 修改未重啟服務重啟 php-fpm/apache

正確的時區配置是日期時間處理的基石,建議在項目初始化階段統一解決。

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