DatePeriod::__construct

(PHP 5 >= 5.3.0)

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

Описание

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

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

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

start

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

interval

Интервал.

recurrences

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

end

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

isostr

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

options

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

Примеры

Пример #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

Коментарии

I found two things useful to know that aren't covered here.

1. endDate is excluded:

<?php
$i 
= new DateInterval('P1D');
$d1 = new Datetime();
$d2 = clone $d1$d2->add($i);
foreach(new 
DatePeriod($d1$i$d2) as $d) {
    echo 
$d->format('Y-m-d H:i:s') . "\n";
}
?>

Will output:
2010-11-03 12:39:53

(Another one because I got it wrong at first)
2. For the first form, recurrences really means REcurrences, not occurences.

<?php
$i 
= new DateInterval('P1D');
$d = new Datetime();
foreach(new 
DatePeriod($d$i1) as $d) {
    echo 
$d->format('Y-m-d H:i:s') . "\n";
}
?>

Will output:
2010-11-03 12:41:05
2010-11-04 12:41:05
2010-11-03 05:50:57
http://php5.kiev.ua/manual/ru/dateperiod.construct.html
When you add the time 23:59:59 to the end DateTime object something like the following then the end date will be included in the period:

<?php
$date_start 
= new DateTime('2012-03-12');
$date_end = new DateTime('2012-03-22 23:59:59');

$interval '+2 days';
$date_interval DateInterval::createFromDateString($interval);

$period = new DatePeriod($date_start$date_interval$date_endDatePeriod::EXCLUDE_START_DATE);

foreach(
$period as $dt) {
 echo 
$dt->format('d/m');
}
?>

OUTPUT:
14/03
16/03
18/03
20/03
22/03
2012-08-07 08:02:13
http://php5.kiev.ua/manual/ru/dateperiod.construct.html

    Поддержать сайт на родительском проекте КГБ