(PHP 5 >= 5.3.0, PHP 7)
DateInterval::format — Форматирует интервал
$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 |
R | Знак "-" при отрицательном числе, "+" при положительном | -, + |
r | Знак "-" при отрицательном числе, пусто при положительном | -, |
Возвращает отформатированный интервал.
Замечание:
Метод DateInterval::format() не делает пересчета и переноса единиц времени при переполнении значений дат. Это ожидаемое поведение, поскольку невозможно реализовать перенос при значениях, например, "32 дня", которые могут интерпретироваться по-разному, начиная "1 месяц и 4 дня" и заканчивая "1 месяц и 1 день".
Пример #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