CakeFest 2024: The Official CakePHP Conference

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|false

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 verwendet werden.

Rückgabewerte

Gibt bei Erfolg eine neue DateInterval-Instanz zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
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