DatePeriod::createFromISO8601String
(PHP 8 >= 8.3.0)
Creates a new DatePeriod object from an ISO8601 string
Description
Creates a new DatePeriod object from an ISO8601 string, as specified with specification.
Parameters
specificationA 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.
- 5 iterations (
optionsA bit field which can be used to control certain behaviour with start- and end- dates.
With
DatePeriod::EXCLUDE_START_DATEyou exclude the start date from the set of recurring dates within the period.With
DatePeriod::INCLUDE_END_DATEyou 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
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