DatePeriod::__construct
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Creates a new DatePeriod object
Description
DateTimeInterface
$start,DateInterval
$interval,int
$recurrences,int
$options = 0)
DateTimeInterface
$start,DateInterval
$interval,DateTimeInterface
$end,int
$options = 0)
$isostr, int $options = 0)Creates a new DatePeriod object.
Parameters
-
start -
The start date of the period.
-
interval -
The interval between recurrences within the period.
-
recurrences -
The number of recurrences. Must be greater than
0. -
end -
The 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_DATEto exclude the start date from the set of recurring dates within the period.
Changelog
| Version | Description |
|---|---|
| 7.2.19, 7.3.6, 7.4.0 |
recurrences must be greater than 0 now.
|
Examples
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
Notes
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.

