# La clase DatePeriod

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

## Introducción

Representa un período de fechas.

Un período de fechas permite iterar a través de un conjunto de fechas y horas, ocurriendo a intervalos regulares, durante un período determinado.

## Sinopsis de la Clase

class DatePeriod implements IteratorAggregate {
/* Constantes */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Propiedades */
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étodos */
public function __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public function __construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
public function __construct(string `$isostr`, int `$options` = 0)
public static function createFromISO8601String(string `$specification`, int `$options` = 0): static
public function getDateInterval(): DateInterval
public function getEndDate(): ?DateTimeInterface
public function getRecurrences(): ?int
public function getStartDate(): DateTimeInterface
}

## Constantes predefinidas

`DatePeriod::EXCLUDE_START_DATE` int

  Excluye la fecha de inicio, utilizada por DatePeriod::__construct().

`DatePeriod::INCLUDE_END_DATE` int

  Incluye la fecha de fin, utilizada por DatePeriod::__construct().

## Propiedades

recurrences

  La cantidad mínima de instancias devueltas por el iterador.

  Si el número de recurrencias ha sido explícitamente pasado mediante el argumento `$recurrences` en el constructor de la instancia DatePeriod, entonces esta propiedad contiene ese valor, más uno si la fecha de inicio no ha sido desactivada por `DatePeriod::EXCLUDE_START_DATE`, más uno si la fecha de fin ha sido activada por `DatePeriod::INCLUDE_END_DATE`.

  Si el número de recurrencias no ha sido explícitamente pasado, entonces esta propiedad contiene el número mínimo de instancias devueltas. Esto sería `0`, más uno si la fecha de inicio no ha sido desactivada por `DatePeriod::EXCLUDE_START_DATE`, más uno si la fecha de fin ha sido activada por `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;

      // recurrencias explícitamente definidas por el constructor
      $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";

      // recurrencias no definidas en el constructor
      $period = new DatePeriod($start, $interval, $end);
      echo $period->recurrences, "\n";

      $period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
      echo $period->recurrences, "\n";

  El ejemplo anterior mostrará:

      5
      6
      7
      1
      0

  Ver también DatePeriod::getRecurrences().

include_end_date

  Incluye o no la fecha de fin en el conjunto de fechas recurrentes.

include_start_date

  Si se debe incluir la fecha de inicio en el conjunto de fechas recurrentes o no.

start

  La fecha de inicio del período.

current

  Durante la iteración, esto contendrá la fecha del día en el período.

end

  La fecha de fin del período.

interval

  Una especificación de intervalo repetitivo ISO 8601.

## Historial de cambios

Versión | Descripción
--- | ---
8.4.0 | Las constantes de clase ahora están tipadas.
8.2.0 | La constante `DatePeriod::INCLUDE_END_DATE` y la propiedad include_end_date han sido añadidas.
8.0.0 | La clase DatePeriod ahora implementa IteratorAggregate. Anteriormente, solo Traversable era implementada.

## Tabla de contenidos

- DatePeriod::__construct — Crea un nuevo objeto DatePeriod
- DatePeriod::createFromISO8601String — Crea un nuevo objeto DatePeriod a partir de un string ISO8601
- DatePeriod::getDateInterval — Devuelve el intervalo
- DatePeriod::getEndDate — Devuelve la fecha de fin
- DatePeriod::getRecurrences — Recupera el número de recurrencias
- DatePeriod::getStartDate — Obtiene la fecha de inicio

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