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 изменен на DateTimeInterface. Ранее использовался DateTime.
5.5.0 Тип параметра start изменен на DateTimeInterface. Ранее использовался 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, не будут работать.