Liefert ein assoziatives Array mit detaillierten Informationen zu einem gegebenen Datum/Zeitpunkt

# date_parse

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

date_parse — Liefert ein assoziatives Array mit detaillierten Informationen zu einem gegebenen Datum/Zeitpunkt

### Beschreibung

function date_parse(string `$datetime`): array

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.

### Parameter-Liste

`datetime`

  Datum und Uhrzeit in einem Format, das von DateTimeImmutable::__construct() akzeptiert wird.

### Rückgabewerte

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.

Warnung

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.

### Fehler/Exceptions

Falls das Datums-/Zeitformat fehlerhaft ist, enthält das Element 'errors' die Fehlermeldungen.

### Changelog

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`.

### Beispiele

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

### Siehe auch

- date_parse_from_format() - Ermittelt Informationen über das angegebene Datum anhand des angegebenen Formats - Ermittelt Informationen über das angegebene Datum anhand des angegebenen Formats
- checkdate() - Prüft ein Gregorianisches Datum auf Gültigkeit für die Überprüfung eines gregorianischen Datums
- getdate() - Liefert Datums- und Zeitinformationen

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open