DatePeriod
PHP Manual

DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7)

DatePeriod::__constructСоздает новый объект DatePeriod

Описание

public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , int $recurrences [, int $options ] )
public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )
public DatePeriod::__construct ( string $isostr [, int $options ] )

Создает новый объект DatePeriod.

Список параметров

start

Начальная дата.

interval

Интервал.

recurrences

Количество повторений.

end

Конечная дата.

isostr

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

options

Может быть установлено значение DatePeriod::EXCLUDE_START_DATE, для исключения начальной даты из периода.

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

Версия Описание
5.5.8 Тип параметра end изменен на DateTimeImmutable. Ранее использовался DateTime.
5.5.0 Тип параметра start изменен на DateTimeImmutable. Ранее использовался DateTime.

Примеры

Пример #1 Пример использования DatePeriod

<?php
$start 
= new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences 4;
$iso 'R4/2012-07-01T00:00:00Z/P7D';

// Эти периоды эквивалентны.
$period = new DatePeriod($start$interval$recurrences);
$period = new DatePeriod($start$interval$end);
$period = new DatePeriod($iso);

// При переборе экземпляра DatePeriod в цикле будут отображены все отобранные даты
// периода.
foreach ($period as $date) {
    echo 
$date->format('Y-m-d')."\n";
}
?>

Результат выполнения данного примера:

2012-07-01
2012-07-08
2012-07-15
2012-07-22
2012-07-29

Пример #2 Пример использования DatePeriod с DatePeriod::EXCLUDE_START_DATE

<?php
$start 
= new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');

$period = new DatePeriod($start$interval$end,
                         
DatePeriod::EXCLUDE_START_DATE);

// При переборе экземпляра DatePeriod в цикле будут отображены все отобранные даты
// периода.
// Однако в этом случае 2012-07-01 не будет отображена.
foreach ($period as $date) {
    echo 
$date->format('Y-m-d')."\n";
}
?>

Результат выполнения данного примера:

2012-07-08
2012-07-15
2012-07-22
2012-07-29

Примечания

Несвязное количество повторений, определенные в секции 4.5 ISO 8601 "Recurring time interval", не поддерживается. То есть ни подстановка "R/..." как isostr ни NULL как end работать не будут.


DatePeriod
PHP Manual