(PHP 5 >= 5.3.0, PHP 7)
DatePeriod::__construct — Erstellt ein neues DatePeriod Objekt
$start
, DateInterval $interval
, int $recurrences
[, int $options
] )$start
, DateInterval $interval
, DateTimeInterface $end
[, int $options
] )$isostr
[, int $options
] )Erstellt ein neues DatePeriod Objekt.
start
Das Startdatum der Periode.
interval
Das Intervall zwischen den Wiederholungen in der Periode.
recurrences
Die Anzahl der Wiederholungen.
end
Das Enddatum der Periode.
isostr
Eine ISO 8601 Spezifikation für sich wiederholende Intervalle.
options
Kann auf den Wert DatePeriod::EXCLUDE_START_DATE
gesetzt werden, um das Startdatum aus den wiederkehrenden Terminen
innnerhalb der Periode auszuschließen.
Version | Beschreibung |
---|---|
5.5.8 |
end Typ zu
DateTimeImmutable geändert.
Zuvor war es DateTime.
|
5.5.0 |
start Typ zu
DateTimeImmutable geändert.
Zuvor war es DateTime.
|
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 Perioden 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 der Periode 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 der Periode 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
Offene Anzahl von Wiederholungen, wie von ISO 8601, Abschnitt 4.5 "Recurring
time interval" spezifiziert, werden nicht unterstützt, d.h. weder die
Übergabe von "R/..." an isostr
,
noch die Übergabe von NULL
an end
funktioniert.