(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Представляет временной период.
Позволяет перемещаться в заданном временном интервале на равные промежутки времени.
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0DatePeriod::EXCLUDE_START_DATE
Исключает начальную дату, используется в DatePeriod::__construct().
DatePeriod::INCLUDE_END_DATE
Включает дату окончания, используется в 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";
?>
Результат выполнения приведённого примера:
Смотрите также описание метода DatePeriod::getRecurrences().
Включать ли дату окончания в набор повторяющихся дат или нет.
Включать ли начальную дату в набор дат или нет.
Дата начала периода.
В процессе итерации будет содержать текущую дату периода.
Конечная дата периода.
Спецификация повторяющегося интервала согласно ISO 8601.
Версия | Описание |
---|---|
8.2.0 | Были добавлены константа DatePeriod::INCLUDE_END_DATE и свойство include_end_date. |
8.0.0 | Класс DatePeriod теперь реализует интерфейс IteratorAggregate. Ранее вместо этого был реализован интерфейс Traversable. |