(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Crée un nouvel objet DatePeriod
$start,$interval,$recurrences,$options = 0$start,$interval,$end,$options = 0$isostr, int $options = 0)Crée un nouvel objet DatePeriod.
startLa date de début de la période.
intervalL'intervalle entre les récurrences de la période.
recurrences
       Le nombre de récurrences. Doit être plus grand que 0.
      
endLa date de fin de la période.
isostr
       Une » spécification
       ISO 8601 de la répétition de l'intervalle.
       Les occurrences zéro (R0/) ne sont pas supportée.
      
options
       Peut être configuré à DatePeriod::EXCLUDE_START_DATE
       pour exclure la date de début du jeu de dates de récursion dans
       la période.
      
| Version | Description | 
|---|---|
| 7.2.19, 7.3.6, 7.4.0 | 
        recurrences doit désormais être plus grand que 0.
        | 
      
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 :
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écursion 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
   Les nombres de répétitions non lié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 fonctionnerait.