(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";
?>
Результат выполнения приведённого примера:
Смотрите также описание метода DatePeriod::getRecurrences().
Включать ли дату окончания в набор повторяющихся дат или нет.
Включать ли начальную дату в набор дат или нет.
Дата начала периода.
В процессе итерации будет содержать текущую дату периода.
Конечная дата периода.
Спецификация повторяющегося интервала согласно ISO 8601.
Версия | Описание |
---|---|
8.4.0 | Константы класса теперь типизированы. |
8.2.0 |
Были добавлены константа DatePeriod::INCLUDE_END_DATE
и свойство include_end_date.
|
8.0.0 | Класс DatePeriod теперь реализует интерфейс IteratorAggregate. Ранее вместо этого был реализован интерфейс Traversable. |