Crée un nouvel objet DatePeriod

# DatePeriod::__construct

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

DatePeriod::__construct — Crée un nouvel objet DatePeriod

### Description

public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
Avertissement

Les constructeurs suivants ont été rendus obsolètes :

public function DatePeriod::__construct(string `$isostr`, int `$options` = 0)

Cette variante du constructeur est obsolète à partir de PHP 8.4.0, utiliser DatePeriod::createFromISO8601String() à la place.

Crée un nouvel objet DatePeriod.

Les objets DatePeriod peuvent être utilisés comme itérateur pour générer un certain nombre d'objets DateTimeImmutable ou DateTime à partir d'une `start` date (date de début), un `interval`, et une `end` date (date de fin) ou du nombre de `recurrences`.

La classe des objets renvoyés est équivalente à la classe ancêtre DateTimeImmutable ou DateTime fournie par l'objet `start`.

### Liste de paramètres

`start`

  La date de début de la période. Incluse par défaut dans le jeu de résultats.

`interval`

  L'intervalle entre les récurrences de la période.

`recurrences`

  Le nombre de récurrences. Doit être plus grand que `0`. Le nombre de résultats renvoyés est supérieur d'une unité, car la date de début est incluse dans le jeu de résultats par défaut.

`end`

  La date de fin de la période. Non incluse par défaut dans le jeu de résultats.

`isostr`

  Un sous-ensemble de la » spécification ISO 8601 de la répétition de l'intervalle.

  Exemples de certaines fonctionnalités de spécification d'intervalle ISO 8601 que PHP ne prend pas en charge :

  1. Les occurrences zéro (`R0/`)
  2. Décalages horaires autres que UTC (`Z`), tels que `+02:00`.
`options`

  Un champ de bits qui peut être utilisé pour contrôler certains comportements avec les dates de début et de fin.

  Peut être configuré à `DatePeriod::EXCLUDE_START_DATE` pour exclure la date de début du jeu de dates de récurrence dans la période.

  Peut être configuré à `DatePeriod::INCLUDE_END_DATE` pour inclure la date de fin du jeu de dates de récurrence dans la période.

### Erreurs / Exceptions

Lance une exception DateMalformedPeriodStringException lorsque le paramètre `isostr` ne peut être analysé comme une période ISO 8601 valide. Antérieur à PHP 8.3, ceci était une Exception.

### Historique

Version | Description
--- | ---
8.4.0 | La signature utilisant `isostr` a été dépréciée, utiliser DatePeriod::createFromISO8601String() à la place.
8.3.0 | Lance désormais une DateMalformedPeriodStringException au lieu de Exception.
8.2.0 | La constante `DatePeriod::INCLUDE_END_DATE` a été ajoutée.
7.2.19, 7.3.6, 7.4.0 | `recurrences` doit désormais être plus grand que `0`.

### Exemples

Exemple #1 Exemple avec DatePeriod

    <?php
    $start = new DateTime('2012-07-01');
    $interval = new DateInterval('P7D');
    $end = new DateTime('2012-07-31');
    $recurrences = 4;
    $iso = 'R4/2012-07-01T00:00:00Z/P7D';

    // Toutes ces périodes sont équivalentes.
    $period = new DatePeriod($start, $interval, $recurrences);
    $period = new DatePeriod($start, $interval, $end);
    $period = new DatePeriod($iso);

    // En parcourant l'objet DatePeriod, toutes les
    // dates de la récursion pour la période seront affichées.
    foreach ($period as $date) {
        echo $date->format('Y-m-d')."\n";
    }

L'exemple ci-dessus va afficher :

    Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in script on line 11
    2012-07-01
    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Exemple #2 Exemple avec DatePeriod et `DatePeriod::EXCLUDE_START_DATE`

    <?php
    $start = new DateTime('2012-07-01');
    $interval = new DateInterval('P7D');
    $end = new DateTime('2012-07-31');

    $period = new DatePeriod($start, $interval, $end,
                             DatePeriod::EXCLUDE_START_DATE);

    // En parcourant l'objet DatePeriod,
    // toutes les dates de récurrence pour la période sont affichées.
    // Notez que, dans ce cas, 2012-07-01 ne sera pas affiché.
    foreach ($period as $date) {
        echo $date->format('Y-m-d')."\n";
    }

L'exemple ci-dessus va afficher :

    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Exemple #3 DatePeriod montrant tous les derniers jeudis du mois sur une année

    <?php
    $begin = new DateTime('2021-12-31');
    $end = new DateTime('2022-12-31 23:59:59');

    $interval = DateInterval::createFromDateString('last thursday of next month');
    $period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

    foreach ($period as $dt) {
        echo $dt->format('l Y-m-d'), "\n";
    }

L'exemple ci-dessus va afficher :

    Thursday 2022-01-27
    Thursday 2022-02-24
    Thursday 2022-03-31
    Thursday 2022-04-28
    Thursday 2022-05-26
    Thursday 2022-06-30
    Thursday 2022-07-28
    Thursday 2022-08-25
    Thursday 2022-09-29
    Thursday 2022-10-27
    Thursday 2022-11-24
    Thursday 2022-12-29

### Notes

Les nombres de répétitions non bornés spécifiés dans la section 4.5 "Intervalle de temps récurrent" de la norme ISO 8601 ne sont pas supportés, c'est-à-dire ni `"R/..."` comme `isostr` ni `null` comme `end` ne fonctionneraient.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open