Time\Duration::fromIso8601DurationString
(PHP 8 >= 8.6.0)
Creates a duration from an ISO 8601 duration string
Description
Creates a non-negative duration from the time part of an ISO 8601 duration specification, such as PT1H30M.
Parameters
specificationAn ISO 8601 duration specification. The format starts with the letter
P, for period, followed by the letterT, for time, and one or more integer values, each followed by a period designator:Period Designator Description Hhours Mminutes Sseconds The designators must appear in this order, but each is optional. A value may exceed the natural range of its unit, so
PT90MandPT1H30Mdescribe the same duration.The date designators
Y,M,WandDare rejected, because years, months, weeks and days do not have a fixed length. Fractional values, such asPT0.5S, are not supported either.
Return Values
Returns a new Time\Duration object.
Errors/Exceptions
- If
specificationcannot be parsed as an ISO 8601 duration, aTime\TimeExceptionis thrown. - If
specificationcontains a date designator (Y,M,WorD), aTime\TimeExceptionis thrown. - If
specificationis a date/time or a time interval rather than a duration, aTime\TimeExceptionis thrown.
Examples
Time\Duration::fromIso8601DurationString example
<?php
var_dump(\Time\Duration::fromIso8601DurationString('PT1H30M'));
var_dump(\Time\Duration::fromIso8601DurationString('PT90S')->seconds);
try {
\Time\Duration::fromIso8601DurationString('P1D');
} catch (\Time\TimeException $e) {
echo $e->getMessage(), PHP_EOL;
}
try {
\Time\Duration::fromIso8601DurationString('PT0.5S');
} catch (\Time\TimeException $e) {
echo $e->getMessage(), PHP_EOL;
}The above example will output:
object(Time\Duration)#1 (3) {
["seconds"]=>
int(5400)
["nanoseconds"]=>
int(0)
["negative"]=>
bool(false)
}
int(90)
The ISO 8601 duration string may only contain the time (T) aspect
The ISO 8601 duration string could not be parsedSee Also
Time\Duration::fromSecondsTime\Duration::fromHours