[PHP] time() 取得時間、date() 時間格式轉換、PHP時區設定

在 PHP 之中可以透過 time(); 這個函數來取得系統的時間,其返回的值是Unix時間戳(Unix timestamp),其值是一個由 1970年1月1日 00:00:00 起到現在時間經過的秒數,對於機器才說這是紀錄時間最方便的方式,但是這個時間並不適合人類來閱讀,所以PHP有另一個函數 date() ,是用來格式化我們透過 time() 所取得的時間的,我們可以將它任意格式成我們希望它顯示的格式形式,讓人類能夠輕易的閱讀。

Time() – 取得Unix時間

Date() – 格式化時間

PHP.ini 時區調整

 


Time()

取得系統的 Unix 時間戳 (timestamp)

範例

time();

舉例來說取得當下的時間如果是 2021年1月1日的00:00:00,那麼這個時間的 Unix時間 將會是 1609430400

至於說Unix的時間有什麼用呢?有些時候我們可以將其直接儲存於資料庫中,減少格式後的還要額外儲存符號的問題!
也可以避免各個國家對於時間習慣格式的不同,可能在資料處理上產生一些困擾… 可以設計成依照不同語系再將Unix轉換成各種不同的時間格式種類,來符合該語系的使用習慣等等…

php.net 手冊 – Time:https://www.php.net/manual/zh/function.time.php

 


Date()

將 Unix 時間戳進行格式化

date(時間格式, 要轉換的時間)

第二個欄位中要填入的是要被轉換的時間,但如果我們選擇省略的話會自動帶入 Time() 這個函式,
如果我們把之前記錄下來的一個Unix時間轉換成我們指定想要的格式,這時候就只要將它放入第二個變數之中就可以了!

第一個欄位中,我們要設定的是希望顯示的時間格式,透過不同的英文字母來指示各種不同的顯示內容與格式
我們只需要將這些字母搭配上我們希望呈現的格式符號,按照順序擺放後即可!

以下列出一些常用的符號範例,完整符號列表 可以在下方的php手冊中查詢

常用符號:

請特別注意大小寫是不同的!

字母符號 說明 輸出範例
Y 年份 – 四位數 2021
y 年份 – 後兩位數 21
F 月份 – 英文顯示 (完整字母) March
M 月份 – 英文顯示 (縮寫三個字母) Mar
m 月份 –  數字顯示 (會自動補0到兩位數) 03
n 月份 –  數字顯示 (不會自動補零) 3
d 日期 – 數字顯示 (會自動補0到兩位數) 03
j 日期 – 數字顯示 (不會自動補零) 3
l 星期 – 英文顯示 (完整字母) Sunday
D 星期 – 英文顯示 (縮寫三個字母) Sun
w 星期 – 數字顯示 (星期日 0 到 星期六 6 ) 0
n 星期 – 數字顯示 (星期一 1 到 星期日 7 ) 7
A 上下午顯示 (英文大寫) AM
a 上下午顯示 (英文小寫) am
H 小時 – 24小時制 (會自動補0到兩位數) 08
h 小時 – 24小時制 (不會自動補0) 8
G 小時 – 12小時制 (會自動補0到兩位數) 08
g 小時 – 12小時制 (不會自動補0) 8
i 分鐘 (會自動補0到兩位數) 59
s 秒數 (會自動補0到兩位數) 59

應用範例:

date("Y/m/d H:i:s"); //2021/01/01 12:30:59
date("Y-m-d H:i:s"); //2021-01-01 12:30:59
date("F j, Y, g:i a"); //January 1, 2021, 12:30 pm

$NewYearTime = "1609430400";
date("Y/m/d H:i:s", $NewYearTime); // 2021-01-01 00:00:00

php.net 手冊 – Date:https://www.php.net/manual/zh/function.date.php

 


 

PHP.ini 時區調整

除了 Linux 本身的時間需要調整時區之外,php.ini 的設定檔之中也有時區的選項需要設定!

如果php.ini之中沒有去設定時區的話,儘管你在Linux已經設定過時區了,PHP讀取出來的時間還將會是UTC時間,

要在php.ini中新增時區的設定後,透過date(); 所讀取出來的時間才會符合你的時區!

 

步驟1

開啟 /etc/php.ini ,並在檔案中搜尋

; date.timezone =

步驟2

將前方的分號去除,並且在等號的後方填入你所在的時區

date.timezone = Asia/Taipei

 

在這個地方要填入的時區名稱,可以到php官方的手冊列表中查詢

時區列表:https://www.php.net/manual/zh/timezones.php

 

步驟3

將php.ini存檔後,重新啟動apache就生效囉!

systemctl restart httpd

 


延伸閱讀

PHP – 文章列表

[CentOS] Linux 系統時間更新與時區調整;ntpd 時間自動更新同步

1 thought on “[PHP] time() 取得時間、date() 時間格式轉換、PHP時區設定”

  1. Pingback: PHP - 相關文章列表 - RicharLin.tw

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。