Cria um novo objeto DatePeriod

# DatePeriod::__construct

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

DatePeriod::__construct — Cria um novo objeto DatePeriod

### Descrição

public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
int `$recurrences`,
int `$options` = 0
)
public function DatePeriod::__construct(
DateTimeInterface `$start`,
DateInterval `$interval`,
DateTimeInterface `$end`,
int `$options` = 0
)
Aviso

A variante de construtor a seguir foi descontinuada:

public function DatePeriod::__construct(string `$isostr`, int `$options` = 0)

Esta variante do construtor foi descontinuada a partir do PHP 8.4.0, use o método DatePeriod::createFromISO8601String() em seu lugar.

Cria um objeto DatePeriod.

Objetos DatePeriod podem ser usados como um iterador para gerar um número de objetos DateTimeImmutable ou DateTime a partir de uma data inicial (`start`), um intervalo (`interval`), e uma data final (`end`) ou o número de recorrências (`recurrences`).

A classe do objeto retornado é equivalente à classe ancestral DateTimeImmutable ou DateTime do objeto do parâmetro `start`.

### Parâmetros

`start`

  A data inicial do período. Incluído por padrão no conjunto de resultados.

`interval`

  A recorrência de intervalos entre os períodos.

`recurrences`

  O número de recorrências. O número do resultado retornado é uma unidade a mais que isto, já que a data de início é incluída no conjunto de resultados por padrão. Deve ser maior que `0`.

`end`

  A data final do período.

`isostr`

  Um sobconjunto da » especificação de intervalos recorrented ISO 8601.

  Exemplos de algumas características de especificação de intervalos ISO 8601 que o PHP não suporta são:

  1. zero ocorrências (`R0/`)
  2. fusos horários diferentes de UTC (`Z`), como `+02:00`.
`options`

  Um campo de bits que pode ser usado para controlar certos comportamentos com datas de início e fim.

  Com `DatePeriod::EXCLUDE_START_DATE` exclui-se a data inicial do conjunto de datas recorrentes dentro do período.

  Com `DatePeriod::INCLUDE_END_DATE` inclui-se a data final do conjunto de datas recorrentes dentro do período.

### Erros/Exceções

Lança uma exceção DateMalformedPeriodStringException quando o parâmetro `isostr` não puder ser interpretado como um período ISO 8601 válido. Antes do PHP 8.3, isto era uma Exception.

### Registro de Alterações

Versão | Descrição
--- | ---
8.4.0 | A assinatura que usa `isostr` foi descontinuada, use DatePeriod::createFromISO8601String() em seu lugar.
8.3.0 | Agora dispara DateMalformedPeriodStringException em vez de Exception.
8.2.0 | A constante `DatePeriod::INCLUDE_END_DATE` foi incluída.
7.2.19, 7.3.6, 7.4.0 | O parâmetro `recurrences` agora deve ser maior que `0`.

### Exemplos

Exemplo #1 Exemplos de DatePeriod

    <?php
    $inicio = new DateTime('2012-07-01');
    $intervalo = new DateInterval('P7D');
    $fim = new DateTime('2012-07-31');
    $recorrencias = 4;
    $iso = 'R4/2012-07-01T00:00:00Z/P7D';

    // Todos estes períodos são equivalentes.
    $periodo = new DatePeriod($inicio, $intervalo, $recorrencias);
    $periodo = new DatePeriod($inicio, $intervalo, $fim);
    $periodo = new DatePeriod($iso);

    // Ao iterar sobre o objeto DatePeriod, todas as
    // datas recorrentes dentro do período são exibidas.
    foreach ($periodo as $data) {
        echo $data->format('Y-m-d')."\n";
    }

O exemplo acima produzirá:

    Deprecated: Calling DatePeriod::__construct(string $isostr, int $options = 0) is deprecated, use DatePeriod::createFromISO8601String() instead in script on line 11
    2012-07-01
    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Exemplo #2 Exemplo de DatePeriod com `DatePeriod::EXCLUDE_START_DATE`

    <?php
    $inicio = new DateTime('2012-07-01');
    $intervalo = new DateInterval('P7D');
    $fim = new DateTime('2012-07-31');

    $periodo = new DatePeriod($inicio, $intervalo, $fim,
                             DatePeriod::EXCLUDE_START_DATE);

    // Ao iterar sobre o objeto DatePeriod, todas as
    // datas recorrentes dentro do período são exibidas.
    // Note que, neste caso, 2012-07-01 não é mostrada.
    foreach ($periodo as $data) {
        echo $data->format('Y-m-d')."\n";
    }

O exemplo acima produzirá:

    2012-07-08
    2012-07-15
    2012-07-22
    2012-07-29

Exemplo #3 Exemplo de DatePeriod mostrando todas as últimas quintas-feiras do ano

    <?php
    $inicio = new DateTime('2021-12-31');
    $fim = new DateTime('2022-12-31 23:59:59');

    $intervalo = DateInterval::createFromDateString('last thursday of next month');
    $periodo = new DatePeriod($inicio, $intervalo, $fim, DatePeriod::EXCLUDE_START_DATE);

    foreach ($periodo as $data) {
        echo $data->format('l Y-m-d'), "\n";
    }

O exemplo acima produzirá:

    Thursday 2022-01-27
    Thursday 2022-02-24
    Thursday 2022-03-31
    Thursday 2022-04-28
    Thursday 2022-05-26
    Thursday 2022-06-30
    Thursday 2022-07-28
    Thursday 2022-08-25
    Thursday 2022-09-29
    Thursday 2022-10-27
    Thursday 2022-11-24
    Thursday 2022-12-29

### Notas

Npumeros de repetições não vinculados como especificado pela ISO 8601 seção 4.5 "Recurring time interval" não são suportados, ex.: nem passando passando `"R/..."` como parâmetro `isostr` nem passando `null` como parâmetro `end` funcionaria.

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