# La classe DatePeriod

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

## Introduction

Représente une période de dates.

Une période de dates permet des itérations à travers un jeu de dates et d'heures, survenant à intervalle régulier, sur une période donnée.

## Synopsis de la classe

class DatePeriod implements IteratorAggregate {
/* Constantes */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Propriétés */
public readonly ?DateTimeInterface $start;
public readonly ?DateTimeInterface $current;
public readonly ?DateTimeInterface $end;
public readonly ?DateInterval $interval;
public readonly int $recurrences;
public readonly bool $include_start_date;
public readonly bool $include_end_date;
/* Méthodes */
public __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
public __construct(string `$isostr`, int `$options` = 0)
public static createFromISO8601String(string `$specification`, int `$options` = 0): static
public getDateInterval(): DateInterval
public getEndDate(): ?DateTimeInterface
public getRecurrences(): ?int
public getStartDate(): DateTimeInterface
}

## Constantes pré-définies

`DatePeriod::EXCLUDE_START_DATE` int

  Exclut la date de début, utilisée par DatePeriod::__construct().

`DatePeriod::INCLUDE_END_DATE` int

  Inclut la date de fin, utilisée par DatePeriod::__construct().

## Propriétés

recurrences

  La quantité minimale d'instances retournée par l'itérateur.

  Si le nombre de récurrences a été explicitement passé par l'intermédiaire du paramètre `$recurrences` dans le constructeur de l'instance DatePeriod, alors cette propriété contient cette valeur, plus un si la date de début n'a pas été désactivée par `DatePeriod::EXCLUDE_START_DATE`, plus un si la date de fin a été activée par `DatePeriod::INCLUDE_END_DATE`.

  Si le nombre de récurrences n'a pas été explicitement passé, alors cette propriété contient le nombre minimum d'instances retournées. Cela serait `0`, plus un si la date de début n'a pas été désactivée par `DatePeriod::EXCLUDE_START_DATE`, plus un si la date de fin a été activée par `DatePeriod::INCLUDE_END_DATE`.

  `<?php
  $start = new DateTime('2018-12-31 00:00:00');
  $end = new DateTime('2021-12-31 00:00:00');
  $interval = new DateInterval('P1M');
  $recurrences = 5;
  // récurrences explicitement définies par le constructeur
  $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
  echo $period->recurrences, "\n";
  $period = new DatePeriod($start, $interval, $recurrences);
  echo $period->recurrences, "\n";
  $period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
  echo $period->recurrences, "\n";
  // récurrences non définies dans le constructeur
  $period = new DatePeriod($start, $interval, $end);
  echo $period->recurrences, "\n";
  $period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
  echo $period->recurrences, "\n";
  ?>`

  L'exemple ci-dessus va afficher :

  5
  6
  7
  1
  0

  Voir aussi DatePeriod::getRecurrences().

include_end_date

  Inclut ou non la date de fin dans le jeu de dates récurrentes.

include_start_date

  S'il faut inclure la date de début dans l'ensemble des dates récurrentes ou non.

start

  La date de début de la période.

current

  Pendant l'itération, cela contiendra la date du jour dans la période.

end

  La date de fin de la période.

interval

  Une spécification d'intervalle répétitif ISO 8601.

## Historique

Version | Description
--- | ---
8.4.0 | Les constantes de classe sont maintenant typées.
8.2.0 | La constante `DatePeriod::INCLUDE_END_DATE` et la propriété include_end_date ont été ajoutées.
8.0.0 | La classe DatePeriod implémente désormais IteratorAggregate. Auparavant, seule Traversable était implémentée.

## Sommaire

- DatePeriod::__construct — Crée un nouvel objet DatePeriod
- DatePeriod::createFromISO8601String — Crée un nouvel objet DatePeriod à partir d'une chaîne de caractères ISO8601
- DatePeriod::getDateInterval — Retourne l'intervalle
- DatePeriod::getEndDate — Retourne la date de fin
- DatePeriod::getRecurrences — Récupère le nombre de récurrences
- DatePeriod::getStartDate — Obtient la date de début