Start · Sprachen · PHP · Referenz · date_interval_create_from_date_string

date_interval_create_from_date_string

Funktion

Erstellt ein <code>DateInterval</code>-Objekt aus einem relativen Datums-/Zeitstring (Alias von <code>DateInterval::createFromDateString</code>).

seit PHP 5.3.0 Kategorie: date

Signatur

date_interval_create_from_date_string(string $datetime): DateInterval|false

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

Typ
DateInterval|false
Beschreibung
Gibt bei Erfolg ein 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
}
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
}
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
3 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.