Pls note these important abbreviations; P: periodY: yearsM: monthsD: daysT: timeH: hoursM: minutesS: secondsThe above is from the ISO 8601 - an international standard that defines how to use, store, and transfer date, time, and duration information.(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 цифр с ведущим 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 день".
Pls note these important abbreviations; P: periodY: yearsM: monthsD: daysT: timeH: hoursM: minutesS: secondsThe above is from the ISO 8601 - an international standard that defines how to use, store, and transfer date, time, and duration information.