date_default_timezone_set('Asia/Taipei'); // 或 PRC、Asia/Shanghai
// PHP 5.1+ 必須設定,否則發出 Warning 並預設 UTC
| 字元 | 說明 | 範例輸出 |
|---|---|---|
| Y | 4 位數年份 | 2024 |
| y | 2 位數年份 | 24 |
| m | 月份,帶前導零 | 01~12 |
| n | 月份,不帶前導零 | 1~12 |
| F | 月份英文全名 | January |
| M | 月份縮寫 | Jan |
| d | 日期,帶前導零 | 01~31 |
| j | 日期,不帶前導零 | 1~31 |
| D | 星期縮寫 | Mon |
| l | 星期全名 | Monday |
| N | ISO-8601 星期數 | 1(一)~7(日) |
| w | 星期數 | 0(日)~6(六) |
| W | 年份第幾週 | 01~53 |
| z | 年份第幾天 | 0~365 |
| H | 24 小時制,帶前導零 | 00~23 |
| G | 24 小時制,不帶前導零 | 0~23 |
| h | 12 小時制,帶前導零 | 01~12 |
| g | 12 小時制,不帶前導零 | 1~12 |
| i | 分鐘,帶前導零 | 00~59 |
| s | 秒,帶前導零 | 00~59 |
| u | 微秒 (PHP 5.2.2+) | 654321 |
| a | am/pm 小寫 | am |
| A | AM/PM 大寫 | PM |
| L | 是否閏年 | 0/1 |
| t | 當月天數 | 28~31 |
| U | Unix 時間戳 | 1704067200 |
| c | ISO 8601 格式 | 2024-01-01T12:00:00+08:00 |
| r | RFC 2822 格式 | Mon, 01 Jan 2024 12:00:00 +0800 |
| e | 時區識別碼 | Asia/Taipei |
| O | GMT 偏移 (小時) | +0800 |
| P | GMT 偏移 (時:分) | +08:00 |
| T | 時區縮寫 | CST |
| I | 是否夏令時 | 0/1 |
| B | Swatch Beat | 500 |
| 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
$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";
}
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() 僅用於簡單格式化輸出。