88 votes

Que signifie "P" dans le format DateInterval ?

Prenons l'exemple suivant, tiré de Manuel php pour DateTime

<?php
  $date = new DateTime('2000-01-20');
  $date->sub(new DateInterval('P10D'));
  echo $date->format('Y-m-d') . "\n";
?>

"D" est pour les jours, que signifie le "P" dans ce formatage ?

127voto

Phil Points 48960

De le manuel

Spécification de l'intervalle.

Le format commence par la lettre P, pour "période". 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.

25voto

Java Points 1068

Le "P" signifie "période". voir ici http://php.net/manual/en/dateinterval.construct.php

12 votes

C'est fou, tant d'exemples utilisent P mais cette référence est si discrète. J'ai deviné que ça voulait dire période et j'ai cherché php.net pour ce mot, je ne suis évidemment jamais arrivé à la page du constructeur.. Mais il n'est pas référencé sur date_format , DateTime::diff , DateTime::format , DateInterval et une foule d'informations générales Date/Time fonctions. Je voulais savoir s'il y avait d'autres préfixes à connaître et j'ai été damné si je pouvais les trouver avant d'arriver à l'échange de piles.

14voto

unclexo Points 1415

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).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X