date() 是 PHP 最常用的日期時間格式化函數,掌握其格式化字符含義,能輕松生成各種業務所需的時間字串。本文詳細列出所有格式化字符含義,並通過實例演示常見組合用法。
date(string $format, ?int $timestamp = null): string
// $timestamp 默認為 time() 當前時間戳
Y | 4 位數年份 | 2024 |
| y | 2 位數年份 | 24 |
| L | 是否閏年 | 1/0 |
m | 數字月份,帶前導零 | 01-12 |
| n | 數字月份,無前導零 | 1-12 |
| F | 月份英文全名 | January |
| M | 月份英文縮寫 | Jan |
d | 月份中的第幾天,帶前導零 | 01-31 |
| j | 月份中的第幾天,無前導零 | 1-31 |
| S | 英文序數後綴 | st, nd, rd, th |
| z | 年份中的第幾天 | 0-365 |
| t | 當月總天數 | 28-31 |
w | 星期幾(數字) | 0(日)-6(六) |
| D | 星期英文縮寫 | Mon |
| l | 星期英文全名 | Monday |
h | 12小時制,帶前導零 | 01-12 |
| g | 12小時制,無前導零 | 1-12 |
| H | 24小時制,帶前導零 | 00-23 |
| G | 24小時制,無前導零 | 0-23 |
| i | 分鐘,帶前導零 | 00-59 |
| s | 秒,帶前導零 | 00-59 |
| a | am/pm 小寫 | am |
| A | AM/PM 大寫 | AM |
U | Unix 時間戳 | 1704067200 |
| c | ISO 8601 格式 | 2024-01-01T00:00:00+08:00 |
| r | RFC 2822 格式 | Mon, 01 Jan 2024 00:00:00 +0800 |
<?php
echo date('Y-m-d'); // 2024-01-15 (ISO 日期)
echo date('Y/m/d'); // 2024/01/15
echo date('Y年m月d日'); // 2024年01月15日
echo date('Y-m-j'); // 2024-1-15 (日無前導零)
echo date('Y-F-jS'); // 2024-January-15th
echo date('Y-M-j'); // 2024-Jan-15
?>
<?php
echo date('H:i:s'); // 14:30:59 (24小時制)
echo date('h:i:s A'); // 02:30:59 PM (12小時制)
echo date('G:i'); // 14:30 (無秒、無前導零)
echo date('g:i a'); // 2:30 pm
?>
<?php
echo date('Y-m-d H:i:s'); // 2024-01-15 14:30:59 (標準 datetime)
echo date('Y-m-d\TH:i:sP'); // 2024-01-15T14:30:59+08:00 (ISO 8601)
echo date('c'); // 同上,內建常量
echo date('r'); // Mon, 15 Jan 2024 14:30:59 +0800 (RFC 2822)
?>
date() 不直接支援中文星期/月份,需自行映射:
<?php
$week = ['日','一','二','三','四','五','六'];
$month = ['','一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
echo "今天是 " . date('Y年n月j日') . " 星期" . $week[date('w')];
// 2024年1月15日 星期一
?>
預設時區為 UTC,輸出時間比本地(如中國)早 8 小時。
<?php
date_default_timezone_set('Asia/Shanghai'); // 或 'PRC'
echo date('Y-m-d H:i:s'); // 正確本地時間
?>
; php.ini
date.timezone = Asia/Shanghai
Asia/Shanghai、Asia/Chongqing、PRCAsia/Hong_KongAsia/TaipeiAsia/Singapore下篇將講解:strtotime() 相對時間解析、DateTime 物件導向操作、時間差計算、業務常用「剛剛/幾分鐘前/幾小時前/昨天」相對時間格式化函數封裝。
date() 格式化字符眾多但規律清晰:大小寫區分精度(Y/y, H/h, M/m),前導零與否(d/j, m/n, H/G, h/g)。記住核心組合 Y-m-d H:i:s、c(ISO8601)、r(RFC2822),加上 date_default_timezone_set('Asia/Shanghai'),即可應對 90% 日期格式化需求。