(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. |