Класс DatePeriod

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Введение

Представляет временной период.

Позволяет перемещаться в заданном временном интервале на равные промежутки времени.

Обзор классов

classDatePeriodimplementsIteratorAggregate {
publicreadonly?DateTimeInterface$start;
publicreadonly?DateTimeInterface$end;
publicreadonly?DateInterval$interval;
publicreadonlyint$recurrences;
publicreadonlybool$include_end_date;
public__construct(
    DateTimeInterface$start,
    DateInterval$interval,
    int$recurrences,
    int$options = 0
)
public__construct(
    DateTimeInterface$start,
    DateInterval$interval,
    DateTimeInterface$end,
    int$options = 0
)
public__construct(string$isostr, int$options = 0)
publicstaticcreateFromISO8601String(string$specification, int$options = 0): static
}

Предопределённые константы

DatePeriod::EXCLUDE_START_DATE

Исключает начальную дату, используется в DatePeriod::__construct().

DatePeriod::INCLUDE_END_DATE

Включает дату окончания, используется в DatePeriod::__construct().

Свойства

recurrences

Минимальное количество экземпляров, возвращаемое итератором.

Если количество повторений было явно передано с помощью параметра 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().

include_end_date

Включать ли дату окончания в набор повторяющихся дат или нет.

include_start_date

Включать ли начальную дату в набор дат или нет.

start

Дата начала периода.

current

В процессе итерации будет содержать текущую дату периода.

end

Конечная дата периода.

interval

Спецификация повторяющегося интервала согласно ISO 8601.

Список изменений

ВерсияОписание
8.2.0 Были добавлены константа DatePeriod::INCLUDE_END_DATE и свойство include_end_date.
8.0.0 Класс DatePeriod теперь реализует интерфейс IteratorAggregate. Ранее вместо этого был реализован интерфейс Traversable.

Содержание

To Top