(PHP 8 >= 8.6.0)
Time\Duration::fromIso8601DurationString — Crea una duración a partir de una cadena de duración ISO 8601
$specification): Time\Duration
Crea una duración no negativa a partir de la parte de tiempo de una
» especificación de duración
ISO 8601, como PT1H30M.
specification
Una especificación de duración ISO 8601.
El formato empieza con la letra P, de
period
(periodo), seguida de la letra T,
de time
(tiempo), y de uno o más valores enteros, cada uno
seguido de un designador de periodo:
| Designador de periodo | Descripción |
|---|---|
H |
horas |
M |
minutos |
S |
segundos |
Los designadores deben aparecer en este orden, pero cada uno es
opcional.
Un valor puede exceder el rango natural de su unidad, por lo que
PT90M y PT1H30M describen la
misma duración.
Los designadores de fecha Y, M,
W y D se rechazan, porque los
años, meses, semanas y días no tienen una duración fija.
Tampoco se admiten los valores fraccionarios, como
PT0.5S.
Devuelve un nuevo objeto Time\Duration.
Si specification no se puede analizar como una
duración ISO 8601, se lanza una
Time\TimeException.
Si specification contiene un designador de fecha
(Y, M, W o
D), se lanza una
Time\TimeException.
Si specification es una fecha/hora o un intervalo
de tiempo en lugar de una duración, se lanza una
Time\TimeException.
Si la duración resultante excede la longitud máxima de una duración, se lanza una Time\TimeException.
Ejemplo #1 Ejemplo de Time\Duration::fromIso8601DurationString()
<?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;
}El ejemplo anterior mostrará:
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