DatePeriod::createFromISO8601String
Creates a new DatePeriod object from an ISO8601 string
Description
public static static DatePeriod::createFromISO8601String(string $specification
, int $options
= 0)
Parameters
-
specification
-
A subset of the » ISO 8601 repeating
interval specification.
An example of an accepted ISO 8601 interval specifications is
R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M
, which
specifies:
-
5 iterations (
R5/
)
-
Starting at
2008-03-01T13:00:00Z
.
-
Each iteration is an 1 year, 2 months, 10 days, 2 hours, and 30 minute interval
(
/P1Y2M10DT2H30M
).
Examples of some ISO 8601 interval specification features that PHP does
not support are:
-
zero occurrences (
R0/
)
-
time offsets other than UTC (
Z
), such as +02:00
.
-
options
-
A bit field which can be used to control certain behaviour with start-
and end- dates.
With DatePeriod::EXCLUDE_START_DATE
you
exclude the start date from the set of recurring dates within the
period.
With DatePeriod::INCLUDE_END_DATE
you
include the end date in the set of recurring dates within the
period.
Return Values
Creates a new DatePeriod object.
DatePeriod objects created with this method can be
used as an iterator to generate a number of
DateTimeImmutable objects.
Errors/Exceptions
Throws an DateMalformedPeriodStringException when
the specification
cannot be parsed as a valid ISO 8601
period.
Examples
Example #1 DatePeriod::createFromISO8601String example
<?php
$iso = 'R4/2023-07-01T00:00:00Z/P7D';
$period = DatePeriod::createFromISO8601String($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:
2023-07-01
2023-07-08
2023-07-15
2023-07-22
2023-07-29