首頁  >  文章  >  後端開發  >  php顯示時間與實際時間不同怎麼辦

php顯示時間與實際時間不同怎麼辦

青灯夜游
青灯夜游原創
2021-09-07 18:49:341931瀏覽

解決方法:1、使用「ini_set('date.timezone','PRC')」設定時區;2、使用「date_default_timezone_set('PRC')」設定時區;3、在設定檔中,設定“date.timezone=PRC”。

php顯示時間與實際時間不同怎麼辦

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

在PHP中,顯示時間與實際時間不一致,是因為時區設定錯了。

全球分為24 個時區,每個時區都有自己的本地時間,同一時間內各時區的本地時間相差1~23 小時,如英國倫敦本地時間與北京本地時間相差8 小時。

想要將顯示時間與實際時間設定一樣,就需要將時區設定為本地時區,以下是一些常用時區識別碼及其意義:

  • Asia /Shanghai —— 上海

  • Asia/Chongqing —— 重慶

  • Asia/Urumqi —— 烏魯木齊

  • #Asia/Hong_Kong —— 香港

  • Asia/Macao —— 澳門

  • Asia/Taipei —— 台北

  • Asia/Singapore —— 新加坡

  • PRC —— 中國時區

註:在國內的話我們將時區設定為「Asia/ShanghaiPRC」都可以,設定成功之後記得重啟伺服器!

下面看看設定時區的方法:

方法1:使用ini_set() 函數設定時區

##PHP 中的ini_set() 函數可以設定指定配置選項的值,這個配置選項會在腳本運行時保持新的值,並在腳本結束時恢復。函數的語法格式如下:


ini_set($varname, $newvalue)

其中 $varname 為待修改的設定選項,$newvalue 為配置選項的新值。

範例:


<?php
header("Content-type:text/html;charset=utf-8"); 
ini_set(&#39;date.timezone&#39;, &#39;GMT&#39;);
echo &#39;当前的格林尼治时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
ini_set(&#39;date.timezone&#39;, &#39;PRC&#39;);
echo &#39;国内当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time());
?>

輸出結果:


php顯示時間與實際時間不同怎麼辦

方法2:使用date_default_timezone_set() 函數設定時區

PHP 中的date_default_timezone_set() 函數可以為腳本中的所有時間日期函數設定預設時區,其語法格式如下:

date_default_timezone_set($timezone_identifier)

參數$timezone_identifier 為時區標識符,例如UTC(格林尼治時間)或Europe/Lisbon(葡萄牙)。

自PHP5.1.0 起(此版本日期時間函數被重寫了),如果時區不合法則每個對日期時間函數的呼叫都會產生一條E_NOTICE 等級的錯誤訊息,如果使用系統設定或TZ 環境變數則也會產生E_STRICT 等級的資訊。

範例:

<?php
header("Content-type:text/html;charset=utf-8"); 
date_default_timezone_set(&#39;Europe/Lisbon&#39;);
echo &#39;葡萄牙的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
date_default_timezone_set(&#39;PRC&#39;);
echo &#39;国内当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time());
?>

輸出結果:

php顯示時間與實際時間不同怎麼辦

#方法3:在設定檔php.ini中設定

PHP 的設定檔就是在PHP 安裝目錄下的php.ini 文件,找到並開啟它。然後在檔案中搜尋date.timezone,我們會看到如下所示的一段訊息:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =

其中

;date.timezone =前面的;與PHP中的//功能相同,都是註解的意思,這裡我們需要將這個;去掉,並在這一句的=後面填寫對應的時區標識符,如下所示:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = PRC

擴充知識:亞洲可以設定的時區識別碼#

# #亞洲/赤塔亞洲/喬巴山亞洲/科倫坡#亞洲/大馬士革##亞洲/達卡亞洲/法馬古斯塔亞洲/香港亞洲/查亞普拉#亞洲/卡拉奇亞洲/克拉斯諾亞爾斯克亞洲/澳門亞洲/馬斯喀特亞洲/鄂木斯克亞洲/平壤亞洲/利雅德亞洲/上海亞洲/塔什幹亞洲/東京亞洲/烏斯季內拉# #亞洲/仰光亞洲/葉卡捷琳堡亞洲/埃里溫# ## 推薦學習:《 PHP影片教學#》
亞洲/亞丁 亞洲/阿拉木圖 #亞洲/安曼 亞洲/阿納德爾
亞洲/阿克套 亞洲/阿克托比 亞洲/阿什哈巴德 亞洲/阿特勞
亞洲/巴格達 亞洲/巴林 亞洲/巴庫 亞洲/曼谷
亞洲/巴爾瑙爾 亞洲/貝魯特 亞洲/比什凱克 亞洲/汶萊
亞洲/帝國 亞洲/杜拜 亞洲/杜尚別
亞洲/加薩 亞洲/希伯倫 亞洲/胡志明
亞洲/ Hovd 亞洲/伊爾庫茨克 亞洲/雅加達
亞洲/耶路撒冷 亞洲/喀布爾 亞洲/堪察加半島
亞洲/加德滿都 亞洲/坎迪加 亞洲/加爾各答
亞洲/Kuala_Lumpur #亞洲/古晉 亞洲/科威特
亞洲/馬加丹 亞洲/望加錫 亞洲/馬尼拉
#亞洲/尼可西亞 亞洲/新庫茲內茨克 亞洲/新西伯利亞
亞洲/烏拉爾 亞洲/金邊 亞洲/坤甸
亞洲/卡達 亞洲/庫斯坦奈 亞洲/Qyzylorda
亞洲/薩哈林 #亞洲/撒馬爾罕 亞洲/首爾
亞洲/新加坡 亞洲/中科雷姆斯克 亞洲/台北
亞洲/第比利斯 亞洲/德黑蘭 亞洲/廷布
亞洲/托木斯克 亞洲/烏蘭巴托 #亞洲/烏魯木齊
亞洲/萬象 亞洲/符拉迪沃斯托克 #亞洲/雅庫茨克

以上是php顯示時間與實際時間不同怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn