DateInterval::format

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

DateInterval::format格式化时间间隔

描述

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

格式化时间间隔。

参数

format

format 参数字符串中识别以下字符。每个格式字符必须以百分号 (%) 为前缀。
format 字符 描述 示例值
% 文字 % %
Y 年,数字,至少 2 位,前面有前导 0 01, 03
y 年,数字 1, 3
M 月,数字,至少 2 位,前面有前导 0 01, 03, 12
m 月,数字 1, 3, 12
D 日,数字,至少 2 位,前面有前导 0 01, 03, 31
d 日,数字 1, 3, 31
a DateTime::diff() 结果的总天数,否则为 (unknown) 4, 18, 8123
H 小时,数字,至少 2 位,前面有前导 0 01, 03, 23
h 小时,数字 1, 3, 23
I 分钟,数字,至少 2 位,前面有前导 0 01, 03, 59
i 分钟,数字 1, 3, 59
S 秒,数字,至少 2 位,前面有前导 0 01, 03, 57
s 秒,数字 1, 3, 57
F 微秒,数字,至少 6 位,前面有前导 0 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 仅输出未被月包含的天数。
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
1 个月前
请注意这些重要的缩写:

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

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