(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::format — Форматирует интервал
$format
): stringФорматирует интервал.
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 цифр с ведущим 0 | 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 выведет только число дней, не покрытых месяцем
echo $interval->format('%m month, %d days');
?>
Результат выполнения данного примера:
31 total days 1 month, 0 days
Замечание:
Метод DateInterval::format() не делает пересчёта и переноса единиц времени при переполнении значений дат. Это ожидаемое поведение, поскольку невозможно реализовать перенос при значениях, например,
"32 дня"
, которые могут интерпретироваться по-разному, начиная"1 месяц и 4 дня"
и заканчивая"1 месяц и 1 день"
.