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

PHP date() 日期格式化完整參數速查表:時區設定、年月日、時分秒、閏年、ISO/RFC 標準格式

     編輯:PHP 綜合知識

前置:設定預設時區 (關鍵)


date_default_timezone_set('Asia/Taipei'); // 或 PRC、Asia/Shanghai
// PHP 5.1+ 必須設定,否則發出 Warning 並預設 UTC

完整格式字元對照表

字元說明範例輸出
Y4 位數年份2024
y2 位數年份24
m月份,帶前導零01~12
n月份,不帶前導零1~12
F月份英文全名January
M月份縮寫Jan
d日期,帶前導零01~31
j日期,不帶前導零1~31
D星期縮寫Mon
l星期全名Monday
NISO-8601 星期數1(一)~7(日)
w星期數0(日)~6(六)
W年份第幾週01~53
z年份第幾天0~365
H24 小時制,帶前導零00~23
G24 小時制,不帶前導零0~23
h12 小時制,帶前導零01~12
g12 小時制,不帶前導零1~12
i分鐘,帶前導零00~59
s秒,帶前導零00~59
u微秒 (PHP 5.2.2+)654321
aam/pm 小寫am
AAM/PM 大寫PM
L是否閏年0/1
t當月天數28~31
UUnix 時間戳1704067200
cISO 8601 格式2024-01-01T12:00:00+08:00
rRFC 2822 格式Mon, 01 Jan 2024 12:00:00 +0800
e時區識別碼Asia/Taipei
OGMT 偏移 (小時)+0800
PGMT 偏移 (時:分)+08:00
T時區縮寫CST
I是否夏令時0/1
BSwatch Beat500
S日期序數後綴st, nd, rd, th

常用組合範例


// 中文日期
echo date('Y年m月d日');           // 2024年01月01日
echo date('Y年n月j日 l');         // 2024年1月1日 Monday

// 標準格式
echo date('Y-m-d H:i:s');         // 2024-01-01 12:00:00
echo date('c');                   // 2024-01-01T12:00:00+08:00 (ISO 8601)
echo date('r');                   // Mon, 01 Jan 2024 12:00:00 +0800 (RFC 2822)

// 時間戳轉換
$ts = strtotime('2024-01-01 12:00:00');
echo date('Y-m-d', $ts);          // 2024-01-01

// 微秒 (需 PHP 7.1+ DateTime)
$dt = new DateTime('now', new DateTimeZone('Asia/Taipei'));
echo $dt->format('Y-m-d H:i:s.u'); // 2024-01-01 12:00:00.123456

DateTime 物件導向介面 (推薦現代專案使用)


$dt = new DateTime('now', new DateTimeZone('Asia/Taipei'));
echo $dt->format('Y-m-d H:i:s');

// 修改日期
$dt->modify('+1 day');
$dt->setDate(2024, 12, 25);

// 日期差
$diff = $dt->diff(new DateTime('2024-01-01'));
echo $diff->days; // 天數差

// 區間迭代
$period = new DatePeriod(
    new DateTime('2024-01-01'),
    new DateInterval('P1D'),
    10
);
foreach ($period as $d) {
    echo $d->format('Y-m-d') . "\n";
}

常見陷阱

  • 未設時區:預設 UTC,導致儲存/顯示偏移 8 小時。
  • strtotime 解析模糊:strtotime('01/02/2024') 美式解析為 1 月 2 日,歐式為 2 月 1 日。**統一用 ISO 8601 (YYYY-MM-DD)** 或 DateTime::createFromFormat。
  • 閏秒、夏令時邊界:DateTime 處理較健壯,避免直接運算時間戳。
  • 格式字元大小寫敏感:m 月份、M 縮寫;d 日期、D 星期。

總結

掌握 date() 格式字元、**必設時區**、善用 DateTime 物件導向介面處理複雜運算、區間、迭代。現代專案**優先用 DateTime/DateTimeImmutable**,date() 僅用於簡單格式化輸出。

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