Signatur
Beschreibung
date_interval_create_from_date_string ist ein prozeduraler Alias der statischen Methode DateInterval::createFromDateString. Die Funktion interpretiert einen relativen Datums-/Zeitstring (z. B. '2 weeks', '1 month 3 days') und erzeugt daraus ein DateInterval-Objekt, das anschließend für Datumsberechnungen verwendet werden kann.
Im Gegensatz zum Konstruktor new DateInterval('P...'), der eine ISO-8601-Dauer-Notation erwartet, akzeptiert diese Funktion natürlichsprachliche relative Ausdrücke wie sie auch von strtotime oder dem DateTime-Konstruktor verstanden werden. Das macht sie besonders praktisch, wenn Intervalle dynamisch aus Benutzereingaben oder Konfigurationswerten erzeugt werden sollen.
Das zurückgegebene DateInterval-Objekt kann direkt mit Methoden wie DateTime::add, DateTime::sub oder DateTimeImmutable::add verwendet werden. Im Fehlerfall — also wenn der String nicht als relatives Intervall interpretiert werden kann — gibt die Funktion false zurück.
Da es sich um einen Alias handelt, ist das Verhalten vollständig identisch mit DateInterval::createFromDateString. In modernem Code wird häufig die objektorientierte Variante bevorzugt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $datetime Pflicht | string | Ein relativer Datums-/Zeitstring, z. B. '2 weeks', '1 month 3 days', '-1 year' oder 'next monday'. Unterstützt dieselben Formate wie strtotime für relative Ausdrücke. |
Rückgabewert
DateInterval-Objekt zurück, das das angegebene Zeitintervall repräsentiert. Bei ungültigem oder nicht interpretierbarem String wird false zurückgegeben.Beispiele
Datum um einen Monat und drei Tage erhöhen
<?php
$start = new DateTime('2024-01-15');
$interval = date_interval_create_from_date_string('1 month 3 days');
if ($interval !== false) {
$start->add($interval);
echo $start->format('Y-m-d'); // 2024-02-18
}
Negatives Intervall — Datum in der Vergangenheit berechnen
<?php
$heute = new DateTimeImmutable('2024-06-01');
$interval = date_interval_create_from_date_string('-2 weeks');
if ($interval !== false) {
$vergangenheit = $heute->add($interval);
echo $vergangenheit->format('Y-m-d'); // 2024-05-18
}
Vergleich mit DateInterval::createFromDateString
<?php
// Beide Aufrufe sind äquivalent:
$a = date_interval_create_from_date_string('3 months');
$b = DateInterval::createFromDateString('3 months');
echo $a->m; // 3
echo PHP_EOL;
echo $b->m; // 3
// Wichtig · Fallstricke
Vorsicht bei Benutzereingaben: Da diese Funktion Strings ähnlich wie strtotime interpretiert, sollten Eingaben aus externen Quellen vor der Verwendung validiert werden. Ein unerwarteter String könnte zu einem falschen Intervall führen, ohne dass ein Fehler ausgelöst wird.
Rückgabewert prüfen: Die Funktion gibt im Fehlerfall false zurück, löst aber keine Exception aus. Der Rückgabewert sollte daher stets mit !== false überprüft werden, bevor das DateInterval-Objekt verwendet wird.
Deprecated-Hinweis: In PHP 8.2+ gibt DateInterval::createFromDateString bei ungültigem String eine DateMalformedIntervalStringException aus. Das prozedurale Alias-Verhalten kann sich dabei je nach PHP-Version leicht unterscheiden — in modernem Code empfiehlt sich daher der direkte Einsatz der OOP-Methode in einem try/catch-Block.