W3docs

date_interval_create_from_date_string()

Die Funktion date_interval_create_from_date_string() erstellt ein DateInterval-Objekt aus einer relativen Zeitzeichenkette in PHP.

Was ist date_interval_create_from_date_string()?

Die Funktion date_interval_create_from_date_string() ist eine in PHP eingebaute Funktion, die aus einem menschenlesbaren relativen Zeitstring wie '1 day' oder '2 weeks 3 hours' ein DateInterval-Objekt erstellt. Sie ist der prozedurale Alias der statischen Methode DateInterval::createFromDateString() — beide verhalten sich identisch.

Diese Seite behandelt die Signatur der Funktion, welche Arten von Zeichenketten sie akzeptiert, den Rückgabewert, die wichtige PHP-8.2-Deprecation sowie ausführbare Beispiele zum Hinzufügen und Formatieren von Intervallen.

Deprecation: date_interval_create_from_date_string() wurde in PHP 8.2 als veraltet markiert und soll in einer zukünftigen Version entfernt werden. Bevorzugen Sie in neuem Code den DateInterval-Konstruktor mit einem ISO-8601-Dauerstring (z. B. new DateInterval('P1D')). Siehe Migration unten.

Syntax

date_interval_create_from_date_string(string $datetime): DateInterval|false

Parameter

  • $datetime — Ein relativer Zeitstring, derselbe Typ, den strtotime() versteht. Nur die relativen Teile werden verwendet; absolute Teile (ein explizites Datum oder eine Uhrzeit) werden ignoriert.

Rückgabewert

Gibt bei Erfolg ein DateInterval-Objekt zurück, oder false, wenn der string keine relativen Teile enthält, die geparst werden können. Überprüfen Sie den Rückgabewert immer, bevor Sie ihn verwenden.

Wie funktioniert es?

Die Funktion führt den string durch denselben Parser wie strtotime() und behält nur die relativen Teile. Nützliche Formate sind unter anderem:

StringResultierendes Intervall
'1 day'1 Tag
'2 weeks'14 Tage
'1 month 15 days'1 Monat, 15 Tage
'2 hours 30 minutes'2 h 30 min
'-1 week'-7 Tage

Ein führendes Minuszeichen (z. B. '-1 week') speichert direkt einen negativen Wert in der entsprechenden Eigenschaft (hier wird d zu -7), sodass das Hinzufügen eines solchen Intervalls zu einem Datum zeitlich rückwärts verschiebt.

Grundlegende Verwendung

<?php

$interval = date_interval_create_from_date_string('1 day');
var_dump($interval->d); // int(1)

Hier erstellen wir ein DateInterval, das eine eintägige Zeitspanne repräsentiert; seine Eigenschaft d (Tage) hat den Wert 1.

Beispiele

Beispiel 1: Ein Intervall zu einem Datum hinzufügen

Dieses Beispiel erstellt ein eintägiges Intervall und fügt es mit DateTime::add() einem DateTime-Objekt hinzu:

php— editable, runs on the server

Ausgabe:

2023-03-04

Beispiel 2: Ein Intervall formatieren

Dieses Beispiel erstellt ein einmonatiges Intervall und gibt es mit DateInterval::format() aus. Beachten Sie, dass %m keine führende Null verwendet — verwenden Sie %M, wenn Sie eine führende Null möchten:

php— editable, runs on the server

Ausgabe:

1 months

Beispiel 3: Absicherung gegen einen false-Rückgabewert

Wenn der string keine relativen Teile enthält, gibt die Funktion false zurück. Überprüfen Sie das Ergebnis immer, bevor Sie es verwenden:

<?php

$interval = date_interval_create_from_date_string('not an interval');

if ($interval === false) {
    echo "Could not parse the interval.";
} else {
    echo $interval->format('%d days');
}

Ausgabe:

Could not parse the interval.

Migration weg von der Funktion

Da die Funktion als veraltet gilt, bevorzugen Sie in neuem Code den DateInterval-Konstruktor. Dieser akzeptiert einen ISO-8601-Dauerstring: P leitet eine Periode ein, und T trennt den Datumsteil vom Zeitteil.

<?php

// Deprecated:
$old = date_interval_create_from_date_string('1 day');

// Recommended replacement:
$new = new DateInterval('P1D'); // P = period, 1D = 1 day

echo $new->format('%d day'); // 1 day

Ausgabe:

1 day

Häufige Umwandlungen: '1 day'P1D, '2 weeks'P14D, '1 month'P1M, '2 hours 30 minutes'PT2H30M.

Tipps zur Performance

  • Erstellen Sie ein Intervall einmal und verwenden Sie es wieder; vermeiden Sie das Neu-Erstellen desselben DateInterval in engen Schleifen.
  • Das Parsen eines relativen Strings ist etwas aufwändiger als der Konstruktor; bevorzugen Sie daher new DateInterval('P1D'), wenn die Dauer fest und im Voraus bekannt ist.

Siehe auch

  • date_interval_format() — Ein DateInterval für die Ausgabe formatieren.
  • date_add() — Ein Intervall zu einem Datum hinzufügen.
  • date_diff() — Das DateInterval zwischen zwei Datumsangaben ermitteln.
  • strtotime() — Der relative Zeitparser, auf den diese Funktion zurückgreift.

Fazit

date_interval_create_from_date_string() wandelt einen relativen Zeitstring in ein DateInterval um und gibt false zurück, wenn der string nicht geparst werden kann. Die Funktion wurde in PHP 8.2 als veraltet markiert, daher sollten Sie in neuem Code den DateInterval-Konstruktor mit einem ISO-8601-Dauerstring bevorzugen (new DateInterval('P1D')). Wenn Sie die Funktion dennoch verwenden, validieren Sie stets den Rückgabewert, bevor Sie das resultierende Objekt nutzen.

Übungen

Übung
Was macht die PHP-Funktion date_interval_create_from_date_string?
Was macht die PHP-Funktion date_interval_create_from_date_string?
Was this page helpful?