php系統時區設定方法總結

來源:互聯網
上載者:User

時區劃分

整個地球分為24個時區,每個時序都有自己的本地時間。同一時間,每個時區的本地時間相差1到23個小時,例如,英國倫敦本地時間與北京本地時間相差8個小時。在國際無線電通訊領域,使用一個統一的時間,稱為通用協調時間(UTC,Universal Time Coordinated),UTC與格林威治標準時間(GMT,Greenwich Mean Time)相同,都與英國倫敦的本地時間相同

時區設定

由於PHP5.0對data()函數進行了重寫,因此,目前的日期時間函數比系統時間少8個小時。在PHP語言中預設設定的是標準的格林威治時間(即採用的是零時區),所以要擷取本地當前的時間必須更改PHP語言中的時區設定。

更改PHP語言中的時區設定有兩種方法:

(1)修改php.ini檔案中的設定,找到[date]下的“;date.timezone=”選項,將其修改為“date.timezone=Asia/Hong_Kong”,然後重新啟動Apache伺服器。


修改PHP.ini這個檔案

找到date.timezone這行,去掉前面的分號,改成:

 代碼如下 複製代碼

date.timezone = Asia/Shanghai

修改 .htaccess檔案

修改.htaccess檔案有兩種辦法,下面的兩條語句只要有一條即可

 代碼如下 複製代碼

php_value date.timezone Asia/Shanghai
SetEnv TZ Asia/Shanghai


(2)在應用程式中,在使用時間日期函數之前添加如下函數:

在代碼中設定時區

 代碼如下 複製代碼

1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai'   亞洲/上海

2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'為“亞洲/重慶”

3 date_default_timezone_set('PRC');//其中PRC為“中華人民共和國”

4i ni_set('date.timezone','Etc/GMT-8');

5 ini_set('date.timezone','PRC');

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

7 ini_set('date.timezone','Asia/Chongqing');

date_default_timezone_set('PRC');

//PRC為中華人民共和國時區

或者

 代碼如下 複製代碼

<?php
    date_default_timezone_set("Asia/Kolkata");
    echo date('d-m-Y H:i:s'); //Returns IST
?>

參數為PHP可識別的時區名稱,如果時區名稱PHP無法識別,則系統採用UTC時區。在PHP手冊中提供了各個時區名稱列表,其中,設定我國北京時間可以使用的時區包括:PRC(中華人民共和國)、Asia/Chongqing(重慶)、Asia/Shanghai(上海)或者Asia/Urumqi(烏魯木齊),這幾個時區名稱等效的。


設定完成後,date()函數便可以正常使用,不會再出現時差問題。

輸出系統的目前時間

上面是一種設定系統目前時間的方法,在這裡將採用另外一種方式設定系統當前的時間,即直接在date()函數之前通過date_default_timezone_set()函數設定系統的時區,並輸出系統當前的日期和時間。代碼如下

 代碼如下 複製代碼

<?php
echo "UTC時間:".date("Y-m-d H:i:s");  //顯示預設的UTC時間
date_default_timezone_set("PRC");      //使用中華人民共和國的時區
echo "<br>";
echo "北京時間:".date("Y-m-d H:i:s");  //輸出北京時間
echo "<br>";
echo "中文時間:".date("Y年m月d日 H時i分s秒");  //輸出中文格式時間
echo "<br>";
echo "當前時區:".date_default_timezone_get();   //擷取當前時區
?>

測試:

 代碼如下 複製代碼

代碼
date_default_timezone_set(‘Etc/GMT’);
//在輸出時間之前設定時區,Etc/GMT為時間標準時間
echo(time());
echo(‘
’);
echo date(‘Y-m-d H:i:s’, time());
echo(‘
’);
echo gmdate (“Y-m-d H:i:s”, time());
echo(‘
’);
date_default_timezone_set(‘PRC’);
//在輸出時間之前設定時區,PRC為中華人民共和國
echo(time());
echo(‘
’);
echo date(‘Y-m-d H:i:s’, time());
echo(‘
’);
echo gmdate (“Y-m-d H:i:s”, time());
?>
結果:
1276257131
2010-06-11 11:52:11
2010-06-11 11:52:11
1276257131
2010-06-11 19:52:11
2010-06-11 11:52:11
結論:
time() :標準時間戳記
指返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到目前時間(指的是當前GMT標準時間)的秒數,它的值跟php系統設定的時區不轉換。
date():返回的是當前 GMT標準時間的本地化時間的“自訂格式”時間,跟php系統設定的時區有關。
gmdate():返回的是當前 GMT標準時間的“自訂格式”時間,跟php系統設定的時區不轉換

unix時間戳記:指的是當前(GMT標準)時間離unix紀元時間(1970-01-01 00:00:00)的秒數;
代碼
date_default_timezone_set(‘Etc/GMT’);
//在輸出時間之前設定時區,Etc/GMT為時間標準時間
echo(strtotime(’1970-01-01 08:00:00′));
echo(‘
’);
date_default_timezone_set(‘PRC’);
//在輸出時間之前設定時區,PRC為中華人民共和國
echo(strtotime(’1970-01-01 08:00:00′));
?>
測試結果:
28800
0

strtotime(a):目前時間的GMT標準時間的unix時間戳記,如果當前php系統的設定的時區不是GMT標準時區,則在應用strtotime(a)時,系統會自動把時間a折算成相應的GMT標準時間,然後計算這個時間的unix時間戳記。跟php系統設定的時區有關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.