请注意这些重要的缩写;
P:周期
Y:年
M:月
D:日
T:时间
H:小时
M:分钟
S:秒
以上内容来自 ISO 8601 - 一项国际标准,定义了如何使用、存储和传输日期、时间和持续时间信息。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::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 | F 和 f 格式现在将始终为正。 |
7.1.0 | 添加了 F 和 f 格式字符。 |
示例 #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 DateInterval 和 DateTime::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"
的任何内容。
请注意这些重要的缩写;
P:周期
Y:年
M:月
D:日
T:时间
H:小时
M:分钟
S:秒
以上内容来自 ISO 8601 - 一项国际标准,定义了如何使用、存储和传输日期、时间和持续时间信息。