phpday 2025 - Call For Papers

DatePeriod::createFromISO8601String

(PHP 8 >= 8.3.0)

DatePeriod::createFromISO8601StringErstellt ein neues DatePeriod-Objekt aus einer ISO8601-Zeichenkette

Beschreibung

public static DatePeriod::createFromISO8601String(string $specification, int $options = 0): static

Erstellt ein neues DatePeriod-Objekt aus der mit specification angegebenen ISO8601-Zeichenkette.

Parameter-Liste

specification

Eine Teilmenge der » ISO-8601-Spezifikation für sich wiederholende Intervalle.

Ein Beispiel für eine zulässige ISO 8601-Intervallangabe ist R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M und bedeutet:

  • 5 Wiederholungen (R5/)
  • Beginnend ab 2008-03-01T13:00:00Z.
  • Jede Wiederholung ist ein Intervall von 1 Jahr, 2 Monaten, 10 Tagen, 2 Stunden und 30 Minuten (/P1Y2M10DT2H30M).

Beispiele für Features der ISO-8601-Spezifikation für Intervalle, die von PHP nicht unterstützt werden, sind:

  1. null Vorkommen (R0/)
  2. andere Zeitabweichungen als UTC (Z), wie +02:00.
options

Ein 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.

Rückgabewerte

Erstellt ein neues DatePeriod-Objekt.

DatePeriod-Objekte können als Iterator verwendet werden, um eine Reihe von DateTimeImmutable-Objekten zu erzeugen.

Fehler/Exceptions

Wenn specification nicht als gültiger ISO-8601-Zeitraum analysiert werden kann, wird eine DateMalformedPeriodStringException geworfen.

Beispiele

Beispiel #1 DatePeriod::createFromISO8601String-Beispiel

<?php
$iso
= 'R4/2023-07-01T00:00:00Z/P7D';

$period = DatePeriod::createFromISO8601String($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:

2023-07-01
2023-07-08
2023-07-15
2023-07-22
2023-07-29

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top