array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'class.dateperiod.php', 1 => 'DatePeriod', ), 'up' => array ( 0 => 'book.datetime.php', 1 => 'Дата/время', ), 'prev' => array ( 0 => 'dateinterval.format.php', 1 => 'DateInterval::format', ), 'next' => array ( 0 => 'dateperiod.construct.php', 1 => 'DatePeriod::__construct', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/datetime/dateperiod.xml', ), 'extra_header_links' => array ( 'rel' => 'alternate', 'href' => '/manual/en/feeds/class.dateperiod.atom', 'type' => 'application/atom+xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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. |