(PHP 8 >= 8.6.0)
Time\Duration::fromIso8601DurationString — Crée une durée à partir d'une chaîne de durée ISO 8601
$specification): Time\Duration
Crée une durée non négative à partir de la partie horaire d'une
» spécification de durée
ISO 8601, comme PT1H30M.
specification
Une spécification de durée ISO 8601.
Le format commence par la lettre P, pour
period
(période), suivie de la lettre T,
pour time
(temps), et d'une ou plusieurs valeurs entières,
chacune suivie d'un désignateur de période :
| Désignateur de période | Description |
|---|---|
H |
heures |
M |
minutes |
S |
secondes |
Les désignateurs doivent apparaître dans cet ordre, mais chacun est
facultatif.
Une valeur peut dépasser la plage naturelle de son unité : PT90M
et PT1H30M décrivent donc la même durée.
Les désignateurs de date Y, M,
W et D sont rejetés, car les
années, les mois, les semaines et les jours n'ont pas de longueur fixe.
Les valeurs fractionnaires, comme PT0.5S, ne sont pas
supportées non plus.
Retourne un nouvel objet Time\Duration.
Si specification ne peut pas être analysée comme une
durée ISO 8601, une
Time\TimeException est lancée.
Si specification contient un désignateur de date
(Y, M, W ou
D), une
Time\TimeException est lancée.
Si specification est une date/heure ou un intervalle
de temps plutôt qu'une durée, une
Time\TimeException est lancée.
Si la durée résultante dépasse la longueur maximale d'une durée, une Time\TimeException est lancée.
Exemple #1 Exemple avec 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;
}L'exemple ci-dessus va afficher :
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