萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP date() 函數完整參考:格式化字符詳解與實戰範例(上)

date() 是 PHP 最常用的日期時間格式化函數,掌握其格式化字符含義,能輕松生成各種業務所需的時間字串。本文詳細列出所有格式化字符含義,並通過實例演示常見組合用法。

date() 語法

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 |

時間(12/24 小時制)

| 字符 | 說明 | 範例 | |------|------|------| | 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 小時。

解決方法 1:腳本開頭設置(推薦)

<?php
date_default_timezone_set('Asia/Shanghai'); // 或 'PRC'
echo date('Y-m-d H:i:s'); // 正確本地時間
?>

解決方法 2:php.ini 全局設置

; php.ini
date.timezone = Asia/Shanghai

常用時區標識符

  • 中國大陸:Asia/Shanghai、Asia/Chongqing、PRC
  • 香港/澳門:Asia/Hong_Kong
  • 台灣:Asia/Taipei
  • 新加坡:Asia/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% 日期格式化需求。

copyright © 萬盛學電腦網 all rights reserved