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_DATE
to 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.
© 1997–2021 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/dateperiod.construct.php