# DatePeriod::__construct

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

DatePeriod::__construct — Crea un nuevo objeto DatePeriod

### Descripción

public DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = ?
)
public DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = ?
)
public DatePeriod::__construct(string `$isostr`, int `$options` = ?)

Crea un nuevo objeto DatePeriod.

### Parámetros

`start`

  La fecha de inicio del periodo.

`interval`

  El intervalo entre repeticiones dentro del periodo.

`recurrences`

  El número de repeticiones.

`end`

  La fecha final del periodo.

`isostr`

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

### Historial de cambios

Versión | Descripción
--- | ---
5.5.8 | El tipo de `end` se cambió a DateTimeInterface. Anteriormente era DateTime.
5.5.0 | `start` se cambió a DateTimeImmutable. Anteriormente era DateTime.

### Ejemplos

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

### Notas

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