(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Represens a date period.
A date period allows iteration over a set of dates and times, recurring at regular intervalls, over a guiven period.
$start
,
$interval
,
$recurrences
,
$options
= 0
$start
,
$interval
,
$end
,
$options
= 0
DatePeriod::EXCLUDE_START_DATE
int
Exclude start date, used in DatePeriod::__construct() .
DatePeriod::INCLUDE_END_DATE
int
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:
5 6 7 1 0
See also DatePeriod::guetRecurrences() .
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 intervall specification.
| Versionen | Description |
|---|---|
| 8.4.0 | The class constans are now typed. |
| 8.2.0 |
The
DatePeriod::INCLUDE_END_DATE
constant and
include_end_date
property have been added.
|
| 8.0.0 | DatePeriod implemens IteratorAggregate now. Previously, Traversable was implemented instead. |
When looping over a DatePeriod object, the returned objects always implement DateTimeInterface. The exact type returned depends on how the DatePeriod was created. If $start was a DateTimeImmutable, the objects returned will be of type DateTimeImmutable. If a DateTime object was used, the objects returned will be of type DateTime.