首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 時間戳與日期轉換完全指南:strtotime、date 與 mktime 實戰應用

     編輯:PHP 相關知識

前言:為什麼要掌握時間戳轉換?

在 PHP 開發中,處理日期與時間是家常便飯。無論是記錄日誌、計算時間差、排程任務,還是顯示使用者友善的相對時間(如「3 分鐘前」),核心都離不開 Unix 時間戳 與 日期字串 的互相轉換。本文將系統整理 strtotime()、date()、mktime() 等關鍵函式,並透過大量實戰範例,助你輕鬆駕馭時間運算。

核心函式速查表

函式用途回傳值
strtotime("英文日期描述")將英文文字日期解析為 Unix 時間戳整數 (秒數) 或 false
date("格式", 時間戳)將時間戳格式化為可讀日期字串字串
mktime(時,分,秒,月,日,年)依指定日期時間建立時間戳整數
time()取得目前 Unix 時間戳整數

實戰範例:從基礎到進階

1. 取得指定日期的時間戳

<?php
// 取得 2009-01-22 00:00:00 的時間戳
echo strtotime("2009-1-22"); // 輸出:1232553600
?>

說明:若未指定時間,預設為當天 00:00:00。

2. 相對時間運算:最實用的「人類語言」

strtotime() 支援豐富的相對格式,配合 date() 即可輕鬆算出「明天這時」、「上週三」等時間點。

常用相對格式速查

  • +1 day / -1 day:明天 / 昨天同一時間
  • +1 week / -1 week:下週 / 上週同一時間
  • next Thursday:下個星期四 (00:00:00)
  • last Thursday:上個星期四 (00:00:00)
  • first day of next month:下個月第一天
  • last day of:本月最後一天
<?php
$now = time();
echo "現在:" . date("Y-m-d H:i:s", $now) . "<br>";
// 2009-01-22 09:40:25

echo "明天這時:" . date("Y-m-d H:i:s", strtotime("+1 day")) . "<br>";
// 2009-01-23 09:40:25

echo "上週四:" . date("Y-m-d H:i:s", strtotime("last Thursday")) . "<br>";
// 2009-01-15 00:00:00
?>

3. 進階應用:組合 mktime() 產生特定時間戳

當需要精確控制「時、分、秒」時,mktime() 比字串解析更直觀:

<?php
// 產生 2024 年農曆除夕 23:59:59 的時間戳
$timestamp = mktime(23, 59, 59, 2, 9, 2024); // 2024-02-09 23:59:59
echo date("Y-m-d H:i:s", $timestamp);
?>

常見陷阱與最佳實踐

  1. 時區設定:務必在腳本開頭或 php.ini 設定 date_default_timezone_set('Asia/Taipei');,避免時間偏移。
  2. 32 位元系統的 2038 年問題:舊版 PHP 在 32 位元系統上,時間戳最大只能到 2038-01-19。現代專案建議使用 64 位元環境或改用 DateTime 類別。
  3. 優先使用 DateTime 物件導向介面:PHP 5.2+ 內建 DateTime、DateInterval、DatePeriod,處理複雜日期運算(如「每月倒數第二天」)更安全、可讀性更高。

結語

掌握 strtotime() 的英文解析能力,搭配 date() 格式化輸出,即可解決 90% 的日期時間需求。若專案涉及跨時區、複雜排程,請升級使用 DateTime 類別,寫出更健壯、可維護的程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved