# Die Klasse DatePeriod

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

## Einführung

Stellt einen Datumsbereich dar.

Ein Datumsbereich ermöglicht die Iteration über eine Reihe von Datumsangaben und Uhrzeiten, die sich im angegebenen Zeitraum in regelmäßigen Intervallen wiederholen.

## Klassenbeschreibung

class DatePeriod implements IteratorAggregate {
/* Konstanten */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Eigenschaften */
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;
/* Methoden */
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
}

## Vordefinierte Konstanten

`DatePeriod::EXCLUDE_START_DATE` int

  Anfangsdatum ausschließen; verwendet in DatePeriod::__construct().

`DatePeriod::INCLUDE_END_DATE` int

  Enddatum einschließen; verwendet in DatePeriod::__construct().

## Eigenschaften

recurrences

  Die minimale Anzahl von Instanzen, die vom Iterator zurückgegeben wird.

  Wenn im Konstruktor der DatePeriod-Instanz die Anzahl der Wiederholungen explizit über den Parameter recurrences übergeben wurde, dann enthält diese Eigenschaft diesen Wert, plus eins, wenn das Startdatum nicht mittels `DatePeriod::EXCLUDE_START_DATE` deaktiviert wurde, plus eins, wenn das Enddatum mittels `DatePeriod::INCLUDE_END_DATE` aktiviert wurde.

  Wenn die Anzahl der Wiederholungen nicht explizit übergeben wurde, dann enthält diese Eigenschaft die Mindestanzahl der zurückgegebenen Instanzen. Dies wäre `0`, plus eins, wenn das Startdatum nicht mittels `DatePeriod::EXCLUDE_START_DATE` deaktiviert wurde, plus eins, wenn das Enddatum mittels `DatePeriod::INCLUDE_END_DATE` aktiviert wurde.

      <?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;

      // Wiederholungen explizit im Konstruktor gesetzt
      $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";

      // Wiederholungen nicht im Konstruktor gesetzt
      $period = new DatePeriod($start, $interval, $end);
      echo $period->recurrences, "\n";

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

  Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

      5
      6
      7
      1
      0

  Siehe auch DatePeriod::getRecurrences().

include_end_date

  Legt fest, ob das Enddatum in der Menge der wiederkehrenden Termine enthalten sein soll oder nicht.

include_start_date

  Legt fest, ob das Anfangsdatum in der Menge der wiederkehrenden Termine enthalten sein soll, oder nicht.

start

  Das Anfangsdatum des Zeitraums.

current

  Während einer Iteration enthält diese Eigenschaft das aktuelle Datum innerhalb des Zeitraums.

end

  Das Enddatum des Zeitraums.

interval

  Eine ISO-8601-konforme Angabe eines sich wiederholenden Intervalls.

## Changelog

Version | Beschreibung
--- | ---
8.4.0 | Die Klassenkonstanten sind nun typisiert.
8.2.0 | Die Konstante `DatePeriod::INCLUDE_END_DATE` und die Eigenschaft include_end_date wurden hinzugefügt.
8.0.0 | DatePeriod implementiert nun IteratorAggregate. Zuvor wurde stattdessen Traversable implementiert.

## Inhaltsverzeichnis

- DatePeriod::__construct — Erstellt ein neues DatePeriod-Objekt
- DatePeriod::createFromISO8601String — Erstellt ein neues DatePeriod-Objekt aus einer ISO8601-Zeichenkette
- DatePeriod::getDateInterval — Liefert ein Intervall
- DatePeriod::getEndDate — Liefert das Enddatum
- DatePeriod::getRecurrences — Liefert die Anzahl der Wiederholungen
- DatePeriod::getStartDate — Liefert das Startdatum

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