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 月份的天数的英文序数后缀,两位数 st, nd, rdth。与 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 位数,年份 BCE 用 - 表示,年份 CE 用 + 表示。 示例:-0055, +0787, +1999, +10191
x 如果需要,扩展的完整数字表示,或者如果可能,标准的完整数字表示(如 Y)。至少四位数。年份 BCE 以 - 开头。超过(包括)10000 的年份以 + 开头。 示例:-0055, 0787, 1999, +10191
Y 年份的完整数字表示,至少 4 位数,年份 BCE 用 - 表示。 示例:-0055, 0787, 1999, 2003, 10191
y 年份的两位数表示 示例:9903
时间 --- ---
a 小写 上午 和 下午 ampm
A 大写 上午 和 下午 AMPM
B 斯沃琪互联网时间 000999
g 12 小时制的小时,不带前导零 112
G 24 小时制的小时,不带前导零 023
h 12 小时制的小时,带前导零 0112
H 24 小时制的小时,带前导零 0023
i 分钟,带前导零 0059
s 秒,带前导零 0059
u 微秒。请注意,date() 始终会生成 000000,因为它接受 int 参数,而 DateTime::format() 如果 DateTime 是用微秒创建的,则支持微秒。 示例:654321
v 毫秒。与 u 相同的说明适用。 示例:654
时区 --- ---
e 时区标识符 示例:UTC, GMT, Atlantic/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 偏移量。 示例:EST, MDT, +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 GMT)以来的秒数 另请参见 time()

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

注意:

由于此函数仅接受 int 时间戳,因此 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();

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

// 打印类似:星期三 10 月 19 日 2022 年 上午 08:40:48
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";

/* 使用格式参数中的常量 */
// 打印类似:周三,10 月 19 日 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