(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format — 根据给定的格式返回日期
面向对象风格
过程式风格
根据给定的格式返回日期。
object
仅过程式风格:由 date_create() 返回的 DateTime 对象
format
输出日期的格式 string。请参见下面的格式选项。还可以使用几个 预定义的日期常量,例如 DATE_RSS
包含格式字符串 'D, d M Y H:i:s'
。
format 字符 |
描述 | 示例返回值 |
---|---|---|
日 | --- | --- |
d |
月份中的日期,两位数,前面带零 | 01 到 31 |
D |
一天的文本表示,三个字母 | Mon 到 Sun |
j |
月份中的日期,不带前导零 | 1 到 31 |
l (小写“L”) |
一周中某天的完整文本表示 | Sunday 到 Saturday |
N |
ISO 8601 中一周中某天的数字表示 | 1 (星期一)到 7 (星期日) |
S |
月份中某天的英语序数后缀,两个字符 |
st 、nd 、rd 或 th 。与 j 配合使用效果很好 |
w |
一周中某天的数字表示 | 0 (星期日)到 6 (星期六) |
z |
一年中的第几天(从 0 开始) | 0 到 365 |
周 | --- | --- |
W |
ISO 8601 年份的周数,周从星期一开始 | 示例:42 (一年中的第 42 周) |
月 | --- | --- |
F |
月份的完整文本表示,例如 January 或 March | January 到 December |
m |
月份的数字表示,前面带零 | 01 到 12 |
M |
月份的简短文本表示,三个字母 | Jan 到 Dec |
n |
月份的数字表示,不带前导零 | 1 到 12 |
t |
给定月份的天数 | 28 到 31 |
年 | --- | --- |
L |
是否是闰年 | 如果是闰年则为 1 ,否则为 0 。 |
o |
ISO 8601 周数年份。这与 Y 的值相同,不同之处在于,如果 ISO 周数 (W ) 属于前一年或后一年,则使用该年份。 |
示例:1999 或 2003 |
X |
年份的扩展完整数字表示,至少 4 位数字,公元前年份使用 - ,公元年份使用 + 。 |
示例:-0055 、+0787 、+1999 、+10191 |
x |
如果需要,则为扩展完整数字表示;如果可能,则为标准完整数字表示(如 Y )。至少四位数字。公元前年份以 - 为前缀。超过(包括)10000 的年份以 + 为前缀。 |
示例:-0055 、0787 、1999 、+10191 |
Y |
年份的完整数字表示,至少 4 位数字,公元前年份使用 - 。 |
示例:-0055 、0787 、1999 、2003 、10191 |
y |
年份的两位数表示 | 示例:99 或 03 |
时间 | --- | --- |
a |
上午和下午的小写字母 | am 或 pm |
A |
上午和下午的大写字母 | AM 或 PM |
B |
Swatch 互联网时间 | 000 到 999 |
g |
12 小时制的小时,不带前导零 | 1 到 12 |
G |
24 小时制的小时,不带前导零 | 0 到 23 |
h |
12 小时制的小时,前面带零 | 01 到 12 |
H |
24 小时制的小时,前面带零 | 00 到 23 |
i |
带前导零的分钟 | 00 到 59 |
s |
带前导零的秒 | 00 到 59 |
u |
微秒。请注意,date() 将始终生成 000000 ,因为它采用 int 参数,而 DateTimeInterface::format() 如果 DateTimeInterface 类型的对象是用微秒创建的,则支持微秒。 |
示例: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 以东时区的偏移量始终为正。 | -43200 到 50400 |
完整日期/时间 | --- | --- |
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 | 已添加格式字符 X 和 x 。 |
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()。
此方法不使用语言环境。所有输出均为英文。