# A classe DatePeriod

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

## Introdução

Representa um período entre datas.

O período entre datas permite a interação entre um conjunto de datas e horários recorrentes a intervalos regulares, durante um determinado período.

## Resumo da classe

class DatePeriod implements IteratorAggregate {
/* Constantes */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Propriedades */
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

  Exclui a data inicial, utilizada em DatePeriod::__construct().

`DatePeriod::INCLUDE_END_DATE` int

  Inclui a data final, utilizado em DatePeriod::__construct().

## Propriedades

recurrences

  O número mínimo de instâncias retornadas pelo iterador.

  O número de recorrências que foi informado explicitamente no parâmetro recurrences no construtor da instância de DatePeriod, de forma que essa propriedade contém este valor, mais um se a data inicial não foi excluída através de `DatePeriod::EXCLUDE_START_DATE`, mais um se a data final foi incluída através de `DatePeriod::INCLUDE_END_DATE`.

  Se o número de recorrências não foi informado explicitamente, então esta propriedade conta o número mínimo de recorrências a retornar. Isto pode ser `0`, mais um se a data inicial não foi excluída através de `DatePeriod::EXCLUDE_START_DATE`, mais um se a data final não foi incluída através de `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;

      // recorrências informadas no construtor
      $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";

      // recorrências não informadas no construtor
      $period = new DatePeriod($start, $interval, $end);
      echo $period->recurrences, "\n";

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

  O exemplo acima produzirá:

      5
      6
      7
      1
      0

  Veja também DatePeriod::getRecurrences().

include_end_date

  Informa se deve ser incluída a data final no conjunto de datas a retornar.

include_start_date

  Informa se deve ser incluída a data inicial no conjunto de datas a retornar.

start

  A data inicial do período.

current

  Contém a data atual dentro do período.

end

  Data final do período.

interval

  Uma especificação ISO 8601 do intervalo repetidor.

## Registro de Alterações

Versão | Descrição
--- | ---
8.4.0 | As constantes de classe agora são tipadas.
8.2.0 | A constante `DatePeriod::INCLUDE_END_DATE` e a propriedade include_end_date foram adicionados.
8.0.0 | DatePeriod agora implementa IteratorAggregate. Anteriormente implementava Traversable.

## Índice

- DatePeriod::__construct — Cria um novo objeto DatePeriod
- DatePeriod::createFromISO8601String — Cria um novo objeto DatePeriod a partir de uma string ISO8601
- DatePeriod::getDateInterval — Obtém o intervalo
- DatePeriod::getEndDate — Obtém a data final
- DatePeriod::getRecurrences — Obtém o número de recorrências
- DatePeriod::getStartDate — Obtém a data inicial

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