(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Объекты класса представляют временной период.
На основе объектов класса перебирают набор дат и времени с повторением через равные временные интервалы заданное количество раз или до заданной конечной даты.
$start,$interval,$recurrences,$options = 0$start,$interval,$end,$options = 0DatePeriod::EXCLUDE_START_DATE
int
Константа исключает начальную дату из набора дат и времени для перебора, передаётся в параметр опций метода DatePeriod::__construct().
DatePeriod::INCLUDE_END_DATE
int
Константа включает конечную дату в набор дат и времени для перебора, передаётся в параметр опций метода DatePeriod::__construct().
Минимальное количество экземпляров, которое верёт итератор.
При передаче количества повторений через параметр
recurrences в конструктор экземпляра DatePeriod
свойство объекта содержит это значение, плюс один,
если начальную дату не отключили
константой DatePeriod::EXCLUDE_START_DATE,
плюс один, если конечную дату исключили
константой DatePeriod::INCLUDE_END_DATE.
При пропуске количества повторений свойство объекта содержит
минимальное количество возвращаемых экземпляров —
0, плюс один, если начальную дату не включили
константой DatePeriod::EXCLUDE_START_DATE,
плюс один, если конечную дату исключили
константой DatePeriod::INCLUDE_END_DATE.
<?php
$start = new DateTime('2018-12-31 00:00:00');
$end = new DateTime('2021-12-31 00:00:00');
$interval = new DateInterval('P1M');
$recurrences = 5;
// Повторения устанавливаются через конструктор
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
echo $period->recurrences, "\n";
// Повторения не задали в конструкторе
$period = new DatePeriod($start, $interval, $end);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";Результат выполнения приведённого примера:
5 6 7 1 0
Смотрите также описание метода DatePeriod::getRecurrences().
Включать ли дату окончания в набор повторяющихся дат или нет.
Включать ли начальную дату в набор дат или нет.
Дата начала периода.
В процессе итерации содержит текущую дату периода.
Конечная дата периода.
Спецификация повторяющегося интервала согласно ISO 8601.
| Версия | Описание |
|---|---|
| 8.4.0 | Типизировали константы класса. |
| 8.2.0 |
Добавили константу DatePeriod::INCLUDE_END_DATE
и свойство include_end_date.
|
| 8.0.0 | Класс DatePeriod теперь реализует интерфейс IteratorAggregate. Раньше вместо этого класс реализовывал интерфейс Traversable. |