(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::createFromDateString — Bildet ein DateInterval aus relativen Teilen eines Strings
Objektorientierter Stil
Prozeduraler Stil
Verwendet die Datum/Zeit-Parser, wie sie im Konstruktor von DateTimeImmutable verwendet werden, um aus den relativen Teilen der ausgewerteten Zeichenkette ein DateInterval zu erstellen.
datetime
Eine Datum mit relativen Teilen. Genauer gesagt, werden die relativen Formate zur Konstruktion des DateInterval verwendet, die von dem für DateTimeImmutable, DateTime und strtotime() verwendeten Parser unterstützt werden.
Um eine Zeichenkette im ISO-8601-Format zu verwenden, z. B.
P7D
, muss der Konstruktor
DateInterval::__construct()verwendet werden.
Gibt bei Erfolg eine Instanz von DateInterval zurück.
Prozeduraler Stil Im Fehlerfall wird false
zurückgegeben.
Nur bei objektorientierter API: Wenn eine ungültige Datum/Uhrzeit-Zeichenkette übergeben wird, wird eine DateMalformedStringException ausgelöst.
Version | Beschreibung |
---|---|
8.3.0 |
DateInterval::createFromDateString() löst nun
eine DateMalformedStringException aus,
wenn eine ungültige Zeichenkette übergeben wird. Zuvor wurde
false zurückgegeben, und eine Warnung wurde
ausgegeben.
Die Funktion date_interval_create_from_date_string()
wurde nicht geändert.
|
8.2.0 |
Wenn ein DateInterval mit dieser Methode erstellt
wird, sind nur die Eigenschaften from_string und
date_string sichtbar.
|
Beispiel #1 Parsen gültiger Datums-Intervalle
<?php
// Jede Gruppe von Intervallen ist gleich.
$i = new DateInterval('P1D');
$i = DateInterval::createFromDateString('1 day');
$i = new DateInterval('P2W');
$i = DateInterval::createFromDateString('2 weeks');
$i = new DateInterval('P3M');
$i = DateInterval::createFromDateString('3 months');
$i = new DateInterval('P4Y');
$i = DateInterval::createFromDateString('4 years');
$i = new DateInterval('P1Y1D');
$i = DateInterval::createFromDateString('1 year + 1 day');
$i = new DateInterval('P1DT12H');
$i = DateInterval::createFromDateString('1 day + 12 hours');
$i = new DateInterval('PT3600S');
$i = DateInterval::createFromDateString('3600 seconds');
?>
Beispiel #2 Parsen von Kombinationen und negativen Intervallen
<?php
$i = DateInterval::createFromDateString('62 weeks + 1 day + 2 weeks + 2 hours + 70 minutes');
echo $i->format('%d %h %i'), "\n";
$i = DateInterval::createFromDateString('1 year - 10 days');
echo $i->format('%y %d'), "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Beispiel #3 Parsen spezieller relativer Datums-Intervalle
<?php
$i = DateInterval::createFromDateString('last day of next month');
var_dump($i);
$i = DateInterval::createFromDateString('last weekday');
var_dump($i);
Das oben gezeigte Beispiel erzeugt mit PHP 8.2 folgende Ausgabe:
object(DateInterval)#1 (2) { ["from_string"]=> bool(true) ["date_string"]=> string(22) "last day of next month" } object(DateInterval)#2 (2) { ["from_string"]=> bool(true) ["date_string"]=> string(12) "last weekday" }
Das oben gezeigte Beispiel erzeugt mit PHP 8 eine ähnliche Ausgabe wie:
object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(1) ["d"]=> int(0) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(2) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } object(DateInterval)#2 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(0) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(1) ["special_amount"]=> int(-1) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(1) }