(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Creates a new DatePeriod object
$start,$interval,$recurrences,$options = 0$start,$interval,$end,$options = 0$isostr, int $options = 0)Creates a new DatePeriod object.
startThe start date of the period.
intervalThe interval between recurrences within the period.
recurrences
The number of recurrences. Must be greater than 0.
endThe end date of the period.
isostr
An » ISO 8601 repeating interval specification.
Zero occurrences (R0/) are not supported.
options
Can be set to DatePeriod::EXCLUDE_START_DATE to
exclude the start date from the set of recurring dates within the
period.
| Version | Description |
|---|---|
| 7.2.19, 7.3.6, 7.4.0 |
recurrences must be greater than 0 now.
|
Example #1 DatePeriod example
<?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';
// All of these periods are equivalent.
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);
// By iterating over the DatePeriod object, all of the
// recurring dates within that period are printed.
foreach ($period as $date) {
echo $date->format('Y-m-d')."\n";
}
?>
The above example will output:
2012-07-01 2012-07-08 2012-07-15 2012-07-22 2012-07-29
Example #2 DatePeriod example with 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);
// By iterating over the DatePeriod object, all of the
// recurring dates within that period are printed.
// Note that, in this case, 2012-07-01 is not printed.
foreach ($period as $date) {
echo $date->format('Y-m-d')."\n";
}
?>
The above example will output:
2012-07-08 2012-07-15 2012-07-22 2012-07-29
Unbound numbers of repetitions as specified by ISO 8601 section 4.5
"Recurring time interval" are not supported, i.e. neither passing
"R/..." as isostr nor passing
null as end would work.