本篇重點
time()取得當前時間戳記date()格式化時間strtotime()將字串轉換為時間戳記mktime()建立時間戳記checkdate()驗證日期是否有效
time() - 取得當前時間戳記
回傳從 Unix 紀元(1970-01-01 00:00:00 UTC)至今的秒數。
範例:
1 | // 輸出當前的 Unix 時間戳記 |
time() - 取得當前時間戳記
date() - 格式化時間
可用來格式化時間戳記,讓時間以可讀的方式顯示。
date() - 格式化時間
1 | // 預設為輸出當下的格式化時間,可指定需格式化的時間點 |
常用格式:
| 格式 | 說明 | 範例 |
|---|---|---|
Y | 完整四位數西元年份,使用 - 表示公元前 | 2025、-0055、0787 |
m | 兩位數月份,沒有十位數會補零 | 02、07、12 |
d | 兩位數日期,沒有十位數會補零 | 14、25、06 |
H | 24 小時制兩位數小時,沒有十位數會補零 | 00 到 23 |
i | 分鐘,沒有十位數會補零 | 00 到 59 |
s | 秒,沒有十位數會補零 | 00 到 59 |
w | 星期幾,數字表示 | 0(表示星期天) 到 6(表示星期六) |
範例:
1 | // 以 YYYY-MM-DD HH:MM:SS 格式輸出當下時間 |
strtotime() - 將字串轉換為時間戳記
將各種時間字串(如 yesterday、+1 week)轉換為 Unix 時間戳。
strtotime() - 將字串轉換為時間戳記
1 | // 預設基礎時間點為當下的時間戳,可指定基礎時間點 |
常見日期時間字串應用:
絕對時間(Absolute Dates)
具體的日期時間,這個類型的關鍵字會忽略 strtotime() 的第二個參數 $baseTimestamp
| 時間字串 | 解析時間(假設今天是 2025-02-14) |
|---|---|
2025-01-01 | 2025-01-01 00:00:00 |
2025-04-31 08:11 | 2025-04-31 08:11:00 |
2025-12-06 noon | 2025-12-06 12:00:00 |
範例:
1 | // 取得 2025-01-01 的時間戳 |
相對時間(Relative Dates)
基於 $baseTimestamp 進行計算,預設為當下的時間(time())
| 時間字串 | 解析時間(假設現在是 2025-02-14 15:30:45) |
|---|---|
+1 day | 2025-02-15 15:30:45 |
-1 day | 2025-02-13 15:30:45 |
+2 weeks | 2025-02-28 15:30:45 |
-3 months | 2024-11-14 15:30:45 |
+5 years | 2030-02-14 15:30:45 |
today | 2025-02-14 00:00:00 |
yesterday | 2025-02-13 00:00:00 |
tomorrow | 2025-02-15 00:00:00 |
now | 2025-02-14 15:30:45 |
midnight | 2025-02-14 00:00:00 |
noon | 2025-02-14 12:00:00 |
範例:
1 | // 假設現在是 2025-02-21 17:54:45 |
mktime() - 建立時間戳記
建立特定時間的 Unix 時間戳。
1 | mktime(int $hour, int $minute, int $second, int $month, int $day, int $year) |
範例:
1 | // 取得 2025-02-14 00:00:00 的時間戳 |
mktime() - 建立時間戳記
checkdate() - 驗證日期是否有效
檢查一個日期是否有效,回傳布林值(boolean)。
1 | // 2024-02-29 是否為有效日期 |
checkdate() - 驗證日期是否有效
結論
這邊整理了我常用的的日期時間函數,後端記錄資料的時候很常需要日期時間、timestamp 的轉換,或是執行排程可能也會需要計算時間來撈取資料等。
time()- 取得當前時間戳記date()- 格式化時間strtotime()- 將字串轉換為時間戳記mktime()- 建立時間戳記checkdate()- 驗證日期是否有效
平常也會使用日期時間函數嗎?有甚麼更方便的函數嗎?歡迎留言跟大家分享!



