Je pense qu'il est possible d'y répondre de manière plus détaillée. Tout d'abord, DateInterval
La méthode du constructeur prend un paramètre nommé $interval_spec
qui est une chaîne de caractères.
DateInterval::__construct ( string $interval_spec )
Ce paramètre a une spécification décrite comme suit :
Le format commence par la lettre P, pour period. Chaque période de durée est représentée par une valeur entière suivie d'un indicateur de période. Si la durée contient des éléments de temps, cette partie de la spécification est précédée de la lettre T.
Certains indicateurs de période sont utilisés dans l'argument :
-
Y pour années
-
M pour mois
-
D pour jours
-
W pour semaines . Ceux-ci sont convertis en jours et ne peuvent donc pas être combinés avec D.
-
H pour heures
-
M pour minutes
-
S pour secondes
Voyons quelques exemples d'utilisation des désignateurs de période :
- Deux jours, c'est P2D.
- Deux secondes, c'est PT2S.
- Six ans et cinq minutes, c'est P6YT5M.
Il y a un ordre qui doit être maintenu comme décrit dans le document :
Les types d'unités doivent être saisis à partir de la plus grande unité d'échelle sur la gauche. à la plus petite unité d'échelle à droite. Donc les années avant les mois, les mois avant les jours, les jours avant les minutes, etc. Ainsi, une année et quatre jours doivent être représentés par P1Y4D, et non P4D1Y.
La spécification peut également être représentée sous la forme d'une date. .
- Un an, deux mois, quatre jours serait P0001-02-04T00:00:00
Mais les valeurs dans ce format ne peuvent pas dépasser le point de passage d'une période donnée (par exemple, 25 heures n'est pas valable).