(PHP 5 >= 5.3.0, PHP 7)
DatePeriod::__construct — Crea un nuevo objeto DatePeriod
$start
   , DateInterval $interval
   , int $recurrences
   [, int $options
  ] )$start
   , DateInterval $interval
   , DateTimeInterface $end
   [, int $options
  ] )$isostr
   [, int $options
  ] )Crea un nuevo objeto DatePeriod.
startLa fecha de inicio del periodo.
intervalEl intervalo entre repeticiones dentro del periodo.
recurrencesEl número de repeticiones.
endLa fecha final del periodo.
isostrUna especificación ISO 8601 del intervalo de repetición.
options
       Se puede establecer a DatePeriod::EXCLUDE_START_DATE para
       excluir la fecha de inicio del conjunto de fechas de repetición dentro del
       periodo.
      
| Versión | Descripción | 
|---|---|
| 5.5.8 | El tipo de endse cambió a
        DateTimeInterface.
        Anteriormente era DateTime. | 
| 5.5.0 | startse cambió a
        DateTimeImmutable.
        Anteriormente era DateTime. | 
Ejemplo #1 Ejemplo de DatePeriod
<?php
$inicio = new DateTime('2012-07-01');
$intervalo = new DateInterval('P7D');
$fin = new DateTime('2012-07-31');
$repeticiones = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';
// Todos estos periodos son equivalentes.
$periodo = new DatePeriod($inicio, $intervalo, $repeticiones);
$periodo = new DatePeriod($inicio, $intervalo, $fin);
$periodo = new DatePeriod($iso);
// Al recorrer el objeto DatePeriod, se imprimen todas
// las fechas de repetición dentro del periodo.
foreach ($periodo as $fecha) {
    echo $fecha->format('Y-m-d')."\n";
}
?>
El resultado del ejemplo sería:
2012-07-01 2012-07-08 2012-07-15 2012-07-22 2012-07-29
Ejemplo #2 Ejemplo de DatePeriod con DatePeriod::EXCLUDE_START_DATE
<?php
$inicio = new DateTime('2012-07-01');
$intervalo = new DateInterval('P7D');
$fin = new DateTime('2012-07-31');
$periodo = new DatePeriod($inicio, $intervalo, $fin,
                         DatePeriod::EXCLUDE_START_DATE);
// Al recorrer el objeto DatePeriod, se imprimen todas
// las fechas de repetición dentro del periodo.
// Observe que, en este caso, 2012-07-01 no se imprime.
foreach ($periodo as $fecha) {
    echo $fecha->format('Y-m-d')."\n";
}
?>
El resultado del ejemplo sería:
2012-07-08 2012-07-15 2012-07-22 2012-07-29
   No se admiten repeticiones de números sin límite tal como se especifca en la sección
   4.5 de la ISO 8601, "Recurring time interval", esto es, no funcionará el paso
   de "R/..." como isostr ni el paso de
   NULL como end.