在 PHP 之中可以透過 time(); 這個函數來取得系統的時間,其返回的值是Unix時間戳(Unix timestamp),其值是一個由 1970年1月1日 00:00:00 起到現在時間經過的秒數,對於機器才說這是紀錄時間最方便的方式,但是這個時間並不適合人類來閱讀,所以PHP有另一個函數 date() ,是用來格式化我們透過 time() 所取得的時間的,我們可以將它任意格式成我們希望它顯示的格式形式,讓人類能夠輕易的閱讀。
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
延伸閱讀
[CentOS] Linux 系統時間更新與時區調整;ntpd 時間自動更新同步
Pingback: PHP - 相關文章列表 - RicharLin.tw