(PHP 8 >= 8.6.0)
Time\Duration::fromIso8601DurationString — Creates a duration from an ISO 8601 duration string
$specification): Time\Duration
Creates a non-negative duration from the time part of an
» ISO 8601
duration specification, such as PT1H30M.
specification
An ISO 8601 duration specification.
The format starts with the letter P, for
period
, followed by the letter T,
for time
, and one or more integer values, each followed
by a period designator:
| Period Designator | Description |
|---|---|
H |
hours |
M |
minutes |
S |
seconds |
The designators must appear in this order, but each is optional.
A value may exceed the natural range of its unit, so
PT90M and PT1H30M describe the
same duration.
The date designators Y, M,
W and D are rejected, because
years, months, weeks and days do not have a fixed length.
Fractional values, such as PT0.5S, are not
supported either.
Returns a new Time\Duration object.
If specification cannot be parsed as an
ISO 8601 duration, a
Time\TimeException is thrown.
If specification contains a date designator
(Y, M, W or
D), a
Time\TimeException is thrown.
If specification is a date/time or a time interval
rather than a duration, a
Time\TimeException is thrown.
If the resulting duration exceeds the maximum length of a duration, a Time\TimeException is thrown.
Example #1 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;
}Il precedente esempio visualizzerà:
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 parsed