PHP 日本大会 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(string $format): string
public DateTimeImmutable::format(string $format): string
public DateTime::format(string $format): string

过程式风格

根据给定的格式返回日期。

参数

object

仅过程式风格:由 date_create() 返回的 DateTime 对象

format

输出日期的格式 string。请参见下面的格式选项。还可以使用几个 预定义的日期常量,例如 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() 将始终生成 000000,因为它采用 int 参数,而 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 以西时区的偏移量始终为负,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)以来的秒数 另请参见 time()

格式字符串中无法识别的字符将按原样打印。使用 gmdate() 时,Z 格式将始终返回 0

注意:

由于此函数仅接受 int 类型的时间戳,因此只有在使用 date_format() 函数以及使用 date_create() 创建的基于用户的时间戳时,u 格式字符才有用。

返回值

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

变更日志

版本 描述
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();

// 打印类似:星期三
echo $date->format('l'), "\n";

// 打印类似:星期三 10 月 19 日 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();

// 打印类似:星期三 第 19 天
echo $date->format('l \t\h\e jS');
?>

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

备注

此方法不使用语言环境。所有输出均为英文。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top