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

PHP 日期時間函數完全指南:date、DateTime、時間戳與格式化對照表

     編輯:PHP 相關知識

PHP 提供豐富的日期時間處理功能,從傳統 date() 到物件導向 DateTime,本文整理常用函數、格式字元對照表與最佳實務。

核心函數速查

函數用途回傳備註
date(string $format, ?int $timestamp=null)格式化時間戳為字串string最常用,$timestamp 預設為 time()
time()取得當前 Unix 時間戳int秒數,1970-01-01 00:00:00 UTC 起
microtime(bool $asFloat=false)取得微秒級時間string|float精度測試、唯一 ID 生成常用
mktime(int $h, $m, $s, $mon, $day, $year)由日期時間組件建立時間戳int|false參數可超出範圍自動進位
strtotime(string $datetime, ?int $base=null)解析英文文字日期為時間戳int|false極強大:"next Monday", "+3 days", "last day of"
checkdate(int $m, $d, $y)驗證日期合法性bool含閏年判斷
getdate(?int $timestamp=null)取得日期時間關聯陣列array鍵:seconds, minutes, hours, mday, mon, year, wday, yday, weekday, month, 0
gmdate()格式化 GMT/UTC 時間string同 date() 但強制 UTC
DateTime 類別物件導向日期時間操作Object支援時區、加減運算、格式化、比較、不可變版 DateTimeImmutable

date() 格式字元完整對照表

字元說明範例
Y4 位數年2024
y2 位數年24
m月份,補 001-12
n月份,不補 01-12
F月份英文全名January
M月份英文縮寫Jan
d日期,補 001-31
j日期,不補 01-31
H24 小時制,補 000-23
h12 小時制,補 001-12
G24 小時制,不補 00-23
g12 小時制,不補 01-12
i分鐘,補 000-59
s秒,補 000-59
u微秒(需 DateTime)654321
aam/pm 小寫am
AAM/PM 大寫PM
l星期幾全名Monday
D星期幾縮寫Mon
w星期幾數字0(日)-6(六)
z一年中的第幾天0-365
W一年中的第幾週01-53
t該月天數28-31
S序數尾綴st, nd, rd, th
cISO 8601 格式2024-01-15T14:30:00+08:00
rRFC 2822 格式Mon, 15 Jan 2024 14:30:00 +0800
UUnix 時間戳1705300200

DateTime 現代用法範例

<?php
$dt = new DateTime('now', new DateTimeZone('Asia/Taipei'));
echo $dt->format('Y-m-d H:i:s'); // 2024-01-15 14:30:00

// 加減運算
$dt->modify('+1 month')->modify('-3 days');
echo $dt->format('Y-m-d');

// 比較
$dt1 = new DateTime('2024-01-01');
$dt2 = new DateTime('2024-12-31');
$diff = $dt1->diff($dt2);
echo $diff->format('%a 天'); // 365 天

// 時區轉換
$utc = new DateTime('now', new DateTimeZone('UTC'));
$utc->setTimezone(new DateTimeZone('America/New_York'));
echo $utc->format('Y-m-d H:i:s T');
?>

最佳實務

  • 新專案**優先使用 DateTime / DateTimeImmutable**,避免 date() + strtotime() 的 32 位元系統 2038 年問題。
  • 資料庫儲存 **UTC 時間戳 (BIGINT) 或 DATETIME(UTC)**,顯示時依使用者時區轉換。
  • 設定預設時區:date_default_timezone_set('Asia/Taipei') 或 php.ini date.timezone。
  • 格式化輸出給前端/ API 時,統一用 **ISO 8601 (c)** 或 **RFC 3339**。

掌握這些工具,日期時間處理將不再是 Bug 溫床。

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