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 __construct(
    DateTimeInterface $start,
    DateInterval $interval,
    int $recurrences,
    int $options = 0
)
public __construct(
    DateTimeInterface $start,
    DateInterval $interval,
    DateTimeInterface $end,
    int $options = 0
)
public __construct(string $isostr, int $options = 0)
public static createFromISO8601String(string $specification, int $options = 0): static
}

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 resultado del ejemplo sería:


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

add a note

User Contributed Notes 1 note

up
22
mail at pascalhofmann dot de
8 years ago
When looping over a DatePeriod object, the returned objects always implement DateTimeInterface. The exact type returned depends on how the DatePeriod was created. If $start was a DateTimeImmutable, the objects returned will be of type DateTimeImmutable. If a DateTime object was used, the objects returned will be of type DateTime.
To Top