(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Represents a date period.
A date period allows iteration over a set of dates and times, recurring at regular intervals, over a given period.
$start
,$interval
,$recurrences
,$options
= 0$start
,$interval
,$end
,$options
= 0DatePeriod::EXCLUDE_START_DATE
Exclude start date, used in DatePeriod::__construct().
DatePeriod::INCLUDE_END_DATE
Include end date, used in DatePeriod::__construct().
The minimum amount of instances as retured by the iterator.
If the number of recurrences has been explicitly passed through the
recurrences parameter in the constructor of the
DatePeriod instance, then this property contains
this value, plus one if the start date has not been disabled
through DatePeriod::EXCLUDE_START_DATE
,
plus one if the end date has been enabled through
DatePeriod::INCLUDE_END_DATE
.
If the number of recurrences has not been explicitly passed, then this
property contains the minimum number of returned instances. This would
be 0
, plus one if the start date
has not been disabled through
DatePeriod::EXCLUDE_START_DATE
,
plus one if the end date has been enabled through
DatePeriod::INCLUDE_END_DATE
.
<?php
$start = new DateTime('2018-12-31 00:00:00');
$end = new DateTime('2021-12-31 00:00:00');
$interval = new DateInterval('P1M');
$recurrences = 5;
// recurrences explicitly set through the constructor
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
echo $period->recurrences, "\n";
// recurrences not set in the constructor
$period = new DatePeriod($start, $interval, $end);
echo $period->recurrences, "\n";
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
echo $period->recurrences, "\n";
?>
The above example will output:
See also DatePeriod::getRecurrences().
Whether to include the end date in the set of recurring dates or not.
Whether to include the start date in the set of recurring dates or not.
The start date of the period.
During iteration this will contain the current date within the period.
The end date of the period.
An ISO 8601 repeating interval specification.
Version | Description |
---|---|
8.2.0 |
The DatePeriod::INCLUDE_END_DATE constant and
include_end_date property have been added.
|
8.0.0 | DatePeriod implements IteratorAggregate now. Previously, Traversable was implemented instead. |