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

PHP Date/Time 函數完整指南:日期時間處理大全

     編輯:PHP 入門

PHP Date/Time 函數完整指南:日期時間處理大全


簡介

Date/Time 函數讓您從伺服器取得日期時間,並以多種格式輸出。注意:這些函數依賴伺服器的本地設定,使用時請考量夏令時間與閏年。PHP 5.2 起引入 DateTime 物件導向介面,功能更強大。


執行期設定 (php.ini)

指令說明預設值PHP 版本
date.timezone所有日期時間函數使用的預設時區""5.1
date.default_latitudedate_sunrise/sunset 預設緯度"31.7667"5.0
date.default_longitudedate_sunrise/sunset 預設經度"35.2333"5.0
date.sunrise_zenith預設日出天頂角"90.83"5.0
date.sunset_zenith預設日落天頂角"90.83"5.0

建議:在 php.ini 或腳本開頭設定 date_default_timezone_set('Asia/Taipei') 避免警告。


程序式核心函數速查

函數說明
date()格式化本地日期時間 (最常用)
time()取得當前 Unix 時間戳
mktime()從日期參數取得 Unix 時間戳
strtotime()解析英文文字日期描述為時間戳
getdate()取得時間戳或當前的日期時間資訊陣列
checkdate()驗證格里高利日期有效性
gmdate()格式化 GMT/UTC 日期時間
gmmktime()取得 GMT 日期的 Unix 時間戳
strftime()依區域設定格式化本地日期時間
gmstrftime()依區域設定格式化 GMT/UTC 日期時間
microtime()取得微秒級時間戳
idate()格式化日期為整數
localtime()取得本地時間陣列

物件導向 DateTime 類別核心方法

方法說明
new DateTime() / date_create()建立 DateTime 物件
date_create_from_format()依指定格式解析字串建立物件
format() / date_format()格式化輸出
modify() / date_modify()修改日期時間 (如 +1 day)
add() / date_add()加上 DateInterval
sub() / date_sub()減去 DateInterval
diff() / date_diff()計算兩日期差值,返回 DateInterval
setTimezone() / date_timezone_set()設定時區
getTimezone() / date_timezone_get()取得時區物件
getTimestamp() / date_timestamp_get()取得 Unix 時間戳
setTimestamp() / date_timestamp_set()從時間戳設定日期時間

DateInterval 與 DatePeriod

  • date_interval_create_from_date_string() — 從字串建立間隔 (如 2 days)
  • date_interval_format() — 格式化間隔輸出
  • new DatePeriod($start, $interval, $recurrences) — 產生週期性日期序列

常用格式化字元 (date() / DateTime::format())

字元說明範例
Y四位數年份2024
m兩位數月份01-12
d兩位數日期01-31
H24小時制小時00-23
i分鐘00-59
s秒數00-59
u微秒 (PHP 5.2.2+)654321
D星期幾縮寫Mon
l星期幾全名Monday
W年度第幾週42
t該月總天數31
O時差 (如 +0800)+0800
cISO 8601 格式2024-01-15T10:30:00+08:00
rRFC 2822 格式Mon, 15 Jan 2024 10:30:00 +0800

預定義日期常數

  • DATE_ATOM — Atom (2005-08-15T16:13:03+0000)
  • DATE_COOKIE — HTTP Cookie (Sun, 14 Aug 2005 16:13:03 UTC)
  • DATE_ISO8601 — ISO-8601
  • DATE_RFC822 / DATE_RFC850 / DATE_RFC1036 / DATE_RFC1123 / DATE_RFC2822
  • DATE_RSS — RSS
  • DATE_W3C — W3C

實用範例

1. 設定時區並輸出當前時間

<?php
date_default_timezone_set('Asia/Taipei');
echo date('Y-m-d H:i:s') . '<br>'; // 2024-01-15 10:30:00
?>

2. 計算兩日期差距

<?php
$start = new DateTime('2024-01-01');
$end = new DateTime('2024-01-15');
$diff = $start->diff($end);
echo $diff->format('%a 天 %h 小時 %i 分鐘'); // 14 天 0 小時 0 分鐘
?>

3. 解析使用者輸入日期

<?php
$input = '15/01/2024';
$dt = DateTime::createFromFormat('d/m/Y', $input);
if ($dt) {
    echo $dt->format('Y-m-d');
} else {
    echo '格式錯誤';
}
?>

4. 產生未來 5 個週五

<?php
$period = new DatePeriod(
    new DateTime('next friday'),
    new DateInterval('P1W'),
    5
);
foreach ($period as $dt) {
    echo $dt->format('Y-m-d') . '<br>';
}
?>

關鍵建議

  • 新專案優先使用 DateTime 物件導向介面,功能更完整、時區處理更安全。
  • 儲存資料庫時統一使用 UTC (DATE_ATOM 或時間戳),顯示時再轉換使用者時區。
  • 避免直接操作時間戳進行日期運算,改用 DateInterval / modify() 避免夏令時間陷阱。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved