PHP Conference Japan 2024

DateInterval::format

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

DateInterval::format格式化间隔

描述

public DateInterval::format(string $format): string

格式化间隔。

参数

format

format 参数字符串中识别以下字符。每个格式字符必须以百分号 (%) 为前缀。
format 字符 描述 示例值
% 字面量 % %
Y 年,数字,至少两位数,并在前面补零 01, 03
y 年,数字 1, 3
M 月,数字,至少两位数,并在前面补零 01, 03, 12
m 月,数字 1, 3, 12
D 日,数字,至少两位数,并在前面补零 01, 03, 31
d 日,数字 1, 3, 31
a 作为 DateTime::diff() 结果的总天数,否则为 (unknown) 4, 18, 8123
H 小时,数字,至少两位数,并在前面补零 01, 03, 23
h 小时,数字 1, 3, 23
I 分钟,数字,至少两位数,并在前面补零 01, 03, 59
i 分钟,数字 1, 3, 59
S 秒,数字,至少两位数,并在前面补零 01, 03, 57
s 秒,数字 1, 3, 57
F 微秒,数字,至少 6 位数,并在前面补零 007701, 052738, 428291
f 微秒,数字 7701, 52738, 428291
R 负数时为 "-",正数时为 "+" -, +
r 负数时为 "-",正数时为空 -,

返回值

返回格式化的间隔。

变更日志

版本 描述
7.2.12 Ff 格式现在将始终为正。
7.1.0 添加了 Ff 格式字符。

示例

示例 #1 DateInterval 示例

<?php

$interval
= new DateInterval('P2Y4DT6H8M');
echo
$interval->format('%d days');

?>

以上示例将输出

4 days

示例 #2 DateInterval 和进位点

<?php

$interval
= new DateInterval('P32D');
echo
$interval->format('%d days');

?>

以上示例将输出

32 days

示例 #3 DateIntervalDateTime::diff() 以及 %a 和 %d 修饰符

<?php

$january
= new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a 将输出总天数。
echo $interval->format('%a total days')."\n";

// 而 %d 仅输出未被月份覆盖的天数。
// month.
echo $interval->format('%m month, %d days');

?>

以上示例将输出

31 total days
1 month, 0 days

注释

注意:

DateInterval::format() 方法不会重新计算时间字符串或日期段中的进位点。这是预期的,因为不可能溢出像 "32 days" 这样的值,它可以解释为从 "1 month and 4 days""1 month and 1 day" 的任何内容。

参见

添加注释

用户贡献的注释 1 条注释

online dot cloudmeetings dot marco at gmail dot com
5 个月前
请注意这些重要的缩写;

P:周期
Y:年
M:月
D:日
T:时间
H:小时
M:分钟
S:秒

以上内容来自 ISO 8601 - 一项国际标准,定义了如何使用、存储和传输日期、时间和持续时间信息。
To Top