(PHP 8 >= 8.3.0)
DatePeriod::createFromISO8601String — Создаёт новый объект DatePeriod из строки в формате стандарта ISO8601
$specification, int $options = 0): static
Метод создаёт новый объект DatePeriod из строки в формате стандарта ISO8601,
как указывает описание параметра specification.
specificationПодмножество » спецификации повторяющихся интервалов стандарта ISO 8601.
Пример принимаемой спецификации интервала стандарта ISO 8601 — строка
R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M, которая
указывает:
5 повторений (R5/)
Начинать с 2008-03-01T13:00:00Z.
Каждое повторение равно интервалу в 1 год 2 месяца 10 дней 2 часа и 30 минут
(/P1Y2M10DT2H30M).
Примеры спецификации интервалов стандарта ISO 8601, которые PHP не поддерживает:
ноль раз (R0/)
смещения времени, отличные от UTC (Z), например, +02:00.
optionsБитовое поле, которое можно указывать для управления отдельным поведением с начальными и конечными датами.
Константа DatePeriod::EXCLUDE_START_DATE
исключает дату начала из набора повторяющихся дат
в пределах периода.
Константа DatePeriod::INCLUDE_END_DATE
включает дату окончания в наборе повторяющихся дат в пределах
периода.
Метод возвращает созданный объект DatePeriod.
С объектом DatePeriod, который создаётся методом, работают как с итератором для генерации объектов DateTimeImmutable.
Метод выбрасывает исключение DateMalformedPeriodStringException,
если значение параметра specification невозможно разобрать как допустимое значение периода
в формате стандарта ISO 8601.
Пример #1 Пример создания из строки в формате ISO8601 объекта периода времени методом DatePeriod::createFromISO8601String
<?php
$iso = 'R4/2023-07-01T00:00:00Z/P7D';
$period = DatePeriod::createFromISO8601String($iso);
// При переборе объекта DatePeriod выведутся
// повторяющиеся в пределах периода даты.
foreach ($period as $date) {
echo $date->format('Y-m-d'), "\n";
}Результат выполнения приведённого примера:
2023-07-01 2023-07-08 2023-07-15 2023-07-22 2023-07-29