Introdução
PHP Manual
PHP Manual»Data/Horário»DatePeriod

A classe DatePeriod

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

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.

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
}
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().

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.

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

To Top