PHP 8.4.2 Released!

DateInterval::createFromDateString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::createFromDateStringBildet ein DateInterval aus relativen Teilen eines Strings

Beschreibung

Objektorientierter Stil

public static DateInterval::createFromDateString(string $datetime): DateInterval

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.

Parameter-Liste

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.

Rückgabewerte

Gibt bei Erfolg eine Instanz von DateInterval zurück. Prozeduraler Stil Im Fehlerfall wird false zurückgegeben.

Fehler/Exceptions

Nur bei objektorientierter API: Wenn eine ungültige Datum/Uhrzeit-Zeichenkette übergeben wird, wird eine DateMalformedStringException ausgelöst.

Changelog

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.

Beispiele

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:


449 2 70
1 -10

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)
}

add a note

User Contributed Notes

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