PHP中設定時區方法

來源:互聯網
上載者:User
本篇文章給大家分享的內容是關於PHP中設定時區方法,有需要的朋友可以參考一下

今天發現一段PHP代碼中的時間判斷語句出了點問題,研究了一下發現問題出在PHP的時區設定上,PHP所取的時間預設是格林威治標準時間,所以和北京時間相差8小時

找到原因後,在網上搜尋到了一些關於PHP的時區設定方法:

1、修改php.ini,在php.ini中找到data.timezone =去掉它前面的;號,然後設定data.timezone = “Asia/Shanghai”;即可。

2、在程式PHP 5以上版本的程式碼中使用函數ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set(‘Asia/Shanghai');

一些常用的時區標識符說明:

Asia/Shanghai – 上海
Asia/Chongqing – 重慶
Asia/Urumqi – 烏魯木齊
Asia/Hong_Kong – 香港
Asia/Macao – 澳門
Asia/Taipei – 台北
Asia/Singapore – 新加坡


函數設定時區方法:

複製代碼 代碼如下:

<?php function_exists(date_default_timezone_set);//在這他總是返回1,這函數是判斷這裡面的字元是不是一個定義了的函數名 date_default_timezone_set("Etc/GMT");//這是格林威治標準時間,得到的時間和預設時區是一樣的 date_default_timezone_set("Etc/GMT+8");//這裡比林威治標準時間慢8小時 date_default_timezone_set("Etc/GMT-8");//這裡比林威治標準時間快8小時 date_default_timezone_set('PRC'); //設定中國時區 ?>



函數ini_set()設定時區:
可以在檔案開頭加入 ini_set('date.timezone','Asia/Shanghai'); // 'Asia/Shanghai' 為上海時區

手動修改php.ini設定
開啟php找到date.timezone = "PRC" 如有去掉前面的分號,沒有的話手動添加!

以下是一些資料補充:

裝上PHP5後你會發現這樣的問題

$atime=date("Y-m-d H:i:s");
echo $atime;
?>
輸出:2006-05-16 06:36:06
現在幾點了?/我的是14:36
這是為什麼捏?
原因是假如你不在程式或設定檔中設定你的伺服器當地時區的話
PHP所取的時間是格林威治標準時間,所以和你當地的時間會有出入
格林威治標準時間和北京時間大概差8個小時左右 那麼我們如何避免時間誤差呢?
我們一起來看看解決方案:
在頁頭使用date_default_timezone_set()設定我的預設時區為北京時間

複製代碼 代碼如下:

<? date_default_timezone_set('PRC'); echo date('Y-m-d H:i:s'); ?>

時間和伺服器目前時間一樣了!
另外附date_default_timezone_set用法如下:
------------------------------------------------------------------------------------
date_default_timezone_set
(PHP 5 >= 5.1.0RC1)
date_default_timezone_set -- 設定用於一個指令碼中所有日期時間函數的預設時區
說明
bool date_default_timezone_set ( string timezone_identifier )
date_default_timezone_set() 設定用於所有日期時間函數的預設時區。
注: 自 PHP 5.1.0 起(此版本日期時間函數被重寫了),如果時區不合法則每個對日期時間函數的調用都會產生一條 E_NOTICE 層級的錯誤資訊。
參數
timezone_identifier
時區標識符,例如 UTC 或 Europe/Lisbon
傳回值
本函數永遠返回 TRUE(即使 timezone_identifier 參數不合法)。
-------------------------------------------------------------------------------------
或者修改 php.ini 中 date.timezone 值
date.timezone = PRC

裝上PHP5後你會發現這樣的問題
$atime=date("Y-m-d H:i:s");
echo $atime;
?>
輸出:2006-05-16 06:36:06
現在幾點了?/我的是14:36
這是為什麼捏?
原因是假如你不在程式或設定檔中設定你的伺服器當地時區的話
PHP所取的時間是格林威治標準時間,所以和你當地的時間會有出入
格林威治標準時間和北京時間大概差8個小時左右 那麼我們如何避免時間誤差呢?
我們一起來看看解決方案:
在頁頭使用date_default_timezone_set()設定我的預設時區為北京時間

複製代碼 代碼如下:

<? date_default_timezone_set('PRC'); echo date('Y-m-d H:i:s'); ?>

時間和伺服器目前時間一樣了!
另外附date_default_timezone_set用法如下:
------------------------------------------------------------------------------------
date_default_timezone_set
(PHP 5 >= 5.1.0RC1)
date_default_timezone_set -- 設定用於一個指令碼中所有日期時間函數的預設時區
說明
bool date_default_timezone_set ( string timezone_identifier )
date_default_timezone_set() 設定用於所有日期時間函數的預設時區。
注: 自 PHP 5.1.0 起(此版本日期時間函數被重寫了),如果時區不合法則每個對日期時間函數的調用都會產生一條 E_NOTICE 層級的錯誤資訊。
參數
timezone_identifier
時區標識符,例如 UTC 或 Europe/Lisbon
傳回值
本函數永遠返回 TRUE(即使 timezone_identifier 參數不合法)。
-------------------------------------------------------------------------------------
或者修改 php.ini 中 date.timezone 值
date.timezone = PRC

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.