PHP Conference Japan 2024

DateTimeInterface::format

DateTimeImmutable::format

DateTime::format

date_format

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format根據給定格式返回格式化後的日期

說明

物件導向風格

public DateTimeInterface::format(字串 $format): 字串
public DateTimeImmutable::format(字串 $format): 字串
public DateTime::format(字串 $format): 字串

程序式風格

根據指定的格式返回格式化後的日期。

參數

object

僅限程序式風格:由 date_create() 返回的 DateTime 物件

format

輸出日期 字串 的格式。請參考下面的格式選項。也有一些預定義的日期常數 可以使用,例如 DATE_RSS 包含格式字串 'D, d M Y H:i:s'

format 參數字串中辨識以下字元
format 字元 說明 範例返回值
--- ---
d 月份中的日期,包含前導零的兩位數字 0131
D 星期的文字表示,三個字母 MonSun
j 月份中的日期,不含前導零 131
l (小寫 'L') 星期的完整文字表示 SundaySaturday
N 星期幾的 ISO 8601 數字表示 1 (星期一) 到 7 (星期日)
S 月份中日期的英文序數後綴,兩個字元 stndrdth。與 j 搭配使用效果良好
w 星期幾的數字表示 0 (星期日) 到 6 (星期六)
z 一年中的第幾天(從 0 開始) 0365
--- ---
W 一年中的 ISO 8601 週數,週從星期一開始 範例:42 (一年中的第 42 週)
--- ---
F 月份的完整文字表示,例如 January 或 March JanuaryDecember
m 月份的數字表示,包含前導零 0112
M 月份的簡短文字表示,三個字母 JanDec
n 月份的數字表示,不含前導零 112
t 指定月份的天數 2831
--- ---
L 是否為閏年 1 表示是閏年,0 則否。
o ISO 8601 週數年。此值與 Y 相同,但如果 ISO 週數 (W) 屬於上一年或下一年,則使用該年。 範例:19992003
X 年份的完整數字表示法,至少 4 位數,公元前年份使用 -,公元後年份使用 + 範例:-0055+0787+1999+10191
x 如果需要,則使用擴展的完整數字表示法,如果可能,則使用標準的完整數字表示法(例如 Y)。至少四位數。公元前的年份前面加上 -。大於等於 10000 的年份前面加上 + 範例:-005507871999+10191
Y 年份的完整數字表示法,至少 4 位數,公元前年份使用 - 範例:-005507871999200310191
y 年份的兩位數表示法 範例:9903
時間 --- ---
a 上午和下午,小寫 ampm
A 上午和下午,大寫 AMPM
B Swatch 網際網路時間 000999
g 12 小時制的小時數,不含前導零 112
G 24 小時制的小時數,不含前導零 023
h 12 小時制的小時數,含前導零 0112
H 24 小時制的小時數,含前導零 0023
i 分鐘數,含前導零 0059
s 秒數,含前導零 0059
u 微秒。請注意,由於 date() 接受 int 參數,它將始終產生 000000,而 DateTimeInterface::format() 如果使用微秒建立 DateTimeInterface 類型的物件,則支援微秒。 範例:654321
v 毫秒。與 u 的注意事項相同。 範例:654
時區 --- ---
e 時區識別碼 範例:UTCGMTAtlantic/Azores
I(大寫 i) 日期是否為日光節約時間 如果是日光節約時間,則為 1,否則為 0
O 與格林威治標準時間 (GMT) 的時差,小時和分鐘之間沒有冒號 範例:+0200
P 與格林威治標準時間 (GMT) 的時差,小時和分鐘之間有冒號 範例:+02:00
p P 相同,但傳回 Z 而不是 +00:00(從 PHP 8.0.0 開始提供) 範例:Z+02:00
T 時區縮寫(如果已知);否則為 GMT 時差。 範例:ESTMDT+05
Z 時區偏移量,以秒為單位。UTC 以西的時區偏移量恆為負數,以東的時區偏移量恆為正數。 -4320050400
完整的日期/時間 --- ---
c ISO 8601 日期 2004-02-12T15:19:21+00:00
r » RFC 2822/» RFC 5322 格式的日期 範例:Thu, 21 Dec 2000 16:01:07 +0200
U 自 Unix 紀元 (1970 年 1 月 1 日 00:00:00 GMT) 以來的秒數 另請參閱 time()

格式字串中無法辨識的字元將會按原樣輸出。使用 gmdate() 時,Z 格式將永遠返回 0

注意:

由於此函式僅接受 整數 時間戳記,因此 u 格式字元僅在使用 date_format() 函式搭配以 date_create() 建立的使用者時間戳記時才有用。

回傳值

成功時返回格式化的日期字串。

更新日誌

版本 說明
8.2.0 已新增格式字元 Xx
8.0.0 已新增格式字元 p

範例

範例 #1 DateTimeInterface::format() 範例

物件導向風格

<?php
$date
= new DateTimeImmutable('2000-01-01');
echo
$date->format('Y-m-d H:i:s');
?>

程序式風格

<?php
$date
= date_create('2000-01-01');
echo
date_format($date, 'Y-m-d H:i:s');
?>

以上範例將輸出

2000-01-01 00:00:00

範例 #2 更多範例

<?php
// 設定預設的時區。
date_default_timezone_set('UTC');

// 現在時間
$date = new DateTimeImmutable();

// 輸出類似:Wednesday
echo $date->format('l'), "\n";

// 輸出類似:Wednesday 19th of October 2022 08:40:48 AM
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";

/* 使用 format 參數中的常數 */
// 輸出類似:Wed, 19 Oct 2022 08:40:48 +0000
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>

您可以透過在格式字串中已識別的字元前面加上反斜線來防止其被展開。如果帶有反斜線的字元已經是一個特殊序列,您可能也需要將反斜線加上跳脫字元。

範例 #3 跳脫格式化時的字元

<?php
$date
= new DateTimeImmutable();

// 輸出類似:Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>

要格式化其他語言的日期,可以使用 IntlDateFormatter::format() 來代替 DateTimeInterface::format()

注意事項

此方法不使用地區設定。所有輸出均為英文。

參見

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top