(PHP 5 >= 5.2.0, PHP 7, PHP 8)
date_parse — Liefert ein assoziatives Array mit detaillierten Informationen zu einem gegebenen Datum/Zeitpunkt
   date_parse() wertet die angegebene Zeichenkette
   datetime nach den gleichen Regeln aus wie
   strtotime() und
   DateTimeImmutable::__construct(). Anstelle eines
   Unix-Zeitstempels (mit strtotime()) oder eines
   DateTimeImmutable-Objekts (mit
   DateTimeImmutable::__construct()) gibt diese Funktion
   ein assoziatives Array mit den Informationen zurück, die sie aus dem
   angegebenen datetime ermitteln konnte.
  
   Wenn über eine bestimmte Gruppe von Elementen keine Informationen gefunden
   werden können, werden diese Array-Elemente auf false gesetzt oder sie
   fehlen. Wenn sie benötigt werden, um einen Zeitstempel oder ein
   DateTimeImmutable-Objekt aus dieser
   datetime-Zeichenkette zu konstruieren, können
   mehrere Felder auf einen anderen Wert als false gesetzt werden. Die
   Beispiele zeigen, wo dies der Fall ist.
  
datetimeDatum und Uhrzeit in einem Format, das von DateTimeImmutable::__construct() akzeptiert wird.
Gibt ein Array mit Informationen zu Datum und Uhrzeit zurück.
   Das zurückgegebene Array hat Schlüssel für year,
   month, day, hour,
   minute, second,
   fraction und is_localtime.
  
   Wenn is_localtime angegeben ist, gibt
   zone_type den Typ der Zeitzone an. Für Typ
   1 (UTC-Offset) werden die Felder zone
   und is_dst hinzugefügt; für Typ 2
   (Zeitzonen-Abkürzung) werden die Felder tz_abbr und
   is_dst hinzugefügt; und für Typ 3
   (Zeitzonen-Kennung) werden die Felder tz_abbr und
   tz_id hinzugefügt.
  
   Wenn relative Zeitelemente in der Zeichenkette
   datetime vorhanden sind, z. B.
   +3 days, dann enthält das zurückgegebene Array ein
   untergeordnetes Array mit dem Schlüssel relative. Dieses
   Array enthält dann die Schlüssel year,
   month, day, hour,
   minute, second und, abhängig von der
   übergebenen Zeichenkette, weekday und
   weekdays.
  
   Das Array enthält die Felder warning_count und
   warnings. Das erste gibt an, wie viele Warnungen es gab.
   Die Schlüssel des Arrays warnings geben die Positionen
   im angegebenen datetime an, an denen die Warnungen
   aufgetreten sind, während die Werte die Warnungen selbst beschreiben.
  
   Das Array enthält auch die Felder error_count und
   errors. Das erste Feld gibt an, wie viele Fehler
   gefunden wurden. Die Schlüssel des Arrays errors geben
   die Positionen im angegebenen datetime an, an denen
   die Fehler aufgetreten sind, während die Werte die Fehler selbst
   beschreiben.
  
    Die Anzahl der Array-Elemente in den Arrays warnings
    und errors kann kleiner sein als
    warning_count oder error_count, wenn
    die Warnungen bzw. Fehler an derselben Stelle aufgetreten sind.
   
Falls das Datums-/Zeitformat fehlerhaft ist, enthält das Element 'errors' die Fehlermeldungen.
| Version | Beschreibung | 
|---|---|
| 7.2.0 | 
       Das Element zone des zurückgegebenen Arrays stellt
       nun Sekunden statt Minuten dar und das Vorzeichen ist umgekehrt. Zum
       Beispiel wird aus -120 nun 7200.
       | 
     
Beispiel #1 
     Ein date_parse()-Beispiel mit einer vollständigen
     datetime-Zeichenkette
    
<?php
var_dump(date_parse("2006-12-12 10:00:00.5"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(12) {
  ["year"]=>
  int(2006)
  ["month"]=>
  int(12)
  ["day"]=>
  int(12)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0.5)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
}
   Die Zeitzonen-Elemente werden nur angezeigt, wenn sie in der angegebenen
   datetime-Zeichenkette enthalten sind. In diesem Fall
   gibt es immer ein Element zone_type und ein paar andere,
   die von seinem Wert abhängen.
   
Beispiel #2 date_parse() mit Zeitzonenkürzel
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 BST"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(16) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(28)
  ["second"]=>
  int(17)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(true)
  ["zone_type"]=>
  int(2)
  ["zone"]=>
  int(0)
  ["is_dst"]=>
  bool(true)
  ["tz_abbr"]=>
  string(3) "BST"
}
Beispiel #3 date_parse() mit Zeitzonenkennung
<?php
var_dump(date_parse("June 2nd, 2022, 10:28:17 Europe/London"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(14) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(28)
  ["second"]=>
  int(17)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(true)
  ["zone_type"]=>
  int(3)
  ["tz_id"]=>
  string(13) "Europe/London"
}
   Wenn eine kürzere datetime-Zeichenkette ausgewertet
   wird, stehen weniger Informationen zur Verfügung. In diesem Beispiel werden
   alle Bestandteile der Uhrzeit als false zurückgegeben.
   
Beispiel #4 date_parse() mit einer minimalen Zeichenkette
<?php
var_dump(date_parse("June 2nd, 2022"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(12) {
  ["year"]=>
  int(2022)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  bool(false)
  ["minute"]=>
  bool(false)
  ["second"]=>
  bool(false)
  ["fraction"]=>
  bool(false)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
}
Relative Formate haben keinen Einfluss auf die Werte, die aus absoluten Formaten gewonnen werden, sondern werden in das Element "relativ" eingefügt.
Beispiel #5 date_parse() mit relativen Formaten
<?php
var_dump(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(13) {
  ["year"]=>
  int(2006)
  ["month"]=>
  int(12)
  ["day"]=>
  int(12)
  ["hour"]=>
  int(10)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0.5)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
  ["relative"]=>
  array(6) {
    ["year"]=>
    int(0)
    ["month"]=>
    int(0)
    ["day"]=>
    int(7)
    ["hour"]=>
    int(1)
    ["minute"]=>
    int(0)
    ["second"]=>
    int(0)
  }
}
   Einige Textbausteine, z. B. Thursday, setzen den
   Zeitanteil der Zeichenkette auf 0. Wenn
   Thursday an
   DateTimeImmutable::__construct() übergeben wird, führt
   dies ebenfalls dazu, dass hour, minute, second und fraction auf
   0 gesetzt werden. Im folgenden Beispiel wird das
   Element year jedoch auf false belassen.
   
Beispiel #6 date_parse() mit Nebeneffekten
<?php
var_dump(date_parse("Thursday, June 2nd"));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(13) {
  ["year"]=>
  bool(false)
  ["month"]=>
  int(6)
  ["day"]=>
  int(2)
  ["hour"]=>
  int(0)
  ["minute"]=>
  int(0)
  ["second"]=>
  int(0)
  ["fraction"]=>
  float(0)
  ["warning_count"]=>
  int(0)
  ["warnings"]=>
  array(0) {
  }
  ["error_count"]=>
  int(0)
  ["errors"]=>
  array(0) {
  }
  ["is_localtime"]=>
  bool(false)
  ["relative"]=>
  array(7) {
    ["year"]=>
    int(0)
    ["month"]=>
    int(0)
    ["day"]=>
    int(0)
    ["hour"]=>
    int(0)
    ["minute"]=>
    int(0)
    ["second"]=>
    int(0)
    ["weekday"]=>
    int(4)
  }
}