Classe DatePeriod

A classe DatePeriod cria uma sequência de datas entre um ponto inicial e final com um intervalo específico. Aceita parâmetros: a data inicial como um objeto DateTime, o intervalo como um objeto DateInterval, o número de recorrências ou a data final. Permite iterar sobre todas as datas no intervalo especificado.

Sintaxe

phpnew DatePeriod(DateTime $start, DateInterval $interval, int $recurrences);
phpnew DatePeriod(DateTime $start, DateInterval $interval, DateTime $end);

Exemplo

Vamos criar um período de 5 datas com um intervalo de 1 dia:

php<?php
  $start = new DateTime('2025-01-01');
  $interval = new DateInterval('P1D');
  $period = new DatePeriod($start, $interval, 4);
  
  foreach ($period as $date) {
    echo $date->format('Y-m-d') . '<br>';
  }
?>

Resultado da execução do código:

php'2025-01-01'
'2025-01-02'
'2025-01-03'
'2025-01-04'
'2025-01-05'

Exemplo

Vamos criar um período entre duas datas com um intervalo de 1 semana:

php<?php
  $start = new DateTime('2025-01-01');
  $end = new DateTime('2025-02-01');
  $interval = new DateInterval('P1W');
  $period = new DatePeriod($start, $interval, $end);

  foreach ($period as $date) {
    echo $date->format('Y-m-d') . '<br>';
  }
?>

Resultado da execução do código:

php'2025-01-01'
'2025-01-08'
'2025-01-15'
'2025-01-22'
'2025-01-29'

Veja também

  • classe DateTime,
    para trabalhar com data e hora
  • classe DateInterval,
    para trabalhar com intervalos de datas