(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Erstellt ein neues DatePeriod-Objekt
$start,$interval,$recurrences,$options = 0$start,$interval,$end,$options = 0Diese Variante des Konstruktors ist veraltet; stattdessen sollte DatePeriod::createFromISO8601String() verwendet werden.
Erstellt ein neues DatePeriod-Objekt.
   DatePeriod-Objekte können als Iterator verwendet
   werden, um aus einem start-Datum, einem
   interval und einem end-Datum
   oder der Anzahl der recurrences (Wiederholungen)
   eine Reihe von DateTimeImmutable- oder
   DateTime-Objekten zu erzeugen.
  
   Die Klasse der zurückgegebenen Objekte entspricht der
   DateTimeImmutable- oder
   DateTime-Elternklasse des
   start-Objekts.
  
startDas Startdatum des Zeitraums; wird standardmäßig in die Ergebnismenge aufgenommen.
intervalDas Intervall zwischen den Wiederholungen innerhalb des Zeitraums.
recurrences
       Die Anzahl der Wiederholungen. Die Anzahl der zurückgegebenen Ergebnisse
       ist um eins größer, da das Startdatum standardmäßig in die Ergebnismenge
       aufgenommen wird; muss größer als 0 sein.
      
endDas Enddatum des Zeitraums; wird standardmäßig nicht in die Ergebnismenge aufgenommen.
isostrEine Teilmenge der » ISO-8601-Spezifikation für sich wiederholende Intervalle.
Beispiele für Features der ISO-8601-Spezifikation für Intervalle, die von PHP nicht unterstützt werden, sind:
R0/)
        
       Z), wie
         +02:00.
        
       optionsEin Bitfeld, mit dem ein bestimmtes Verhalten bezüglich der Start- und Enddaten gesteuert werden kann.
       Mit DatePeriod::EXCLUDE_START_DATE wird das
       Startdatum aus der Menge der wiederkehrenden Termine innerhalb des
       Zeitraums ausgeschlossen.
      
       Mit DatePeriod::INCLUDE_END_DATE wird das Enddatum
       in die Menge der wiederkehrenden Termine innerhalb des Zeitraums
       aufgenommen.
      
   Wenn isostr nicht als gültiger ISO-8601-Zeitraum
   geparst werden kann, wird eine
   DateMalformedPeriodStringException geworfen. Vor
   PHP 8.3 wird eine Exception geworfen.
  
| Version | Beschreibung | 
|---|---|
| 8.3.0 | Wirft nun eine DateMalformedPeriodStringException anstelle von Exception. | 
| 8.2.0 | Die Konstante DatePeriod::INCLUDE_END_DATEwurde
        hinzugefügt. | 
| 7.2.19, 7.3.6, 7.4.0 | recurrencesmuss jetzt größer als0sein. | 
Beispiel #1 DatePeriod-Beispiel
<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';
// Alle diese Zeiträume sind gleichwertig.
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);
// Durch Iterieren über das DatePeriod-Objekt, werden alle sich
// wiederholenden Termine innerhalb des Zeitraums ausgegeben.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
2012-07-01 2012-07-08 2012-07-15 2012-07-22 2012-07-29
Beispiel #2 DatePeriod-Beispiel mit DatePeriod::EXCLUDE_START_DATE
<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$period = new DatePeriod($start, $interval, $end,
                         DatePeriod::EXCLUDE_START_DATE);
// Durch Iterieren über das DatePeriod-Objekt werden alle sich
// wiederholenden Termine innerhalb des Zeitraums ausgegeben.
// Es ist zu beachten, dass in diesem Fall 2012-07-01 nicht ausgegeben wird.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
2012-07-08 2012-07-15 2012-07-22 2012-07-29
Beispiel #3 Ein DatePeriod-Beispiel, das alle letzten Donnerstage eines Jahres anzeigt
<?php
$begin = new DateTime('2021-12-31');
$end = new DateTime('2022-12-31 23:59:59');
$interval = DateInterval::createFromDateString('last thursday of next month');
$period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $dt) {
    echo $dt->format('l Y-m-d'), "\n";
}
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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
   Die unbegrenzte Anzahl von Wiederholungen, wie von ISO 8601, Abschnitt 4.5
   "Recurring time interval" spezifiziert, wird nicht unterstützt, d. h. weder
   die Übergabe von "R/..." an
   isostr noch die Übergabe von null an
   end funktioniert.
  
