# date_parse_from_format

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

date_parse_from_format — Ermittelt Informationen über das angegebene Datum anhand des angegebenen Formats

### Beschreibung

date_parse_from_format(string `$format`, string `$datetime`): array

Gibt ein assoziatives Array mit detaillierten Informationen über das angegebene Datum und die angegebene Uhrzeit zurück.

### Parameter-Liste

`format`

  Zur Verwendung des Parameters `format` siehe die Dokumentation von DateTimeImmutable::createFromFormat(). Es gelten die gleichen Regeln.

`datetime`

  Eine Zeichenkette, die Datum und Uhrzeit angibt.

### Rückgabewerte

Gibt ein assoziatives Array mit detaillierten Informationen über das angegebene Datum und die angegebene 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.

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 folgende Beispiel zeigt eine solche Warnung.

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. Das folgende Beispiel zeigt einen solchen Fehler.

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

Wenn der Parameter `datetime` NULL-Bytes enthält, wirft diese Funktion einen ValueError.

### Changelog

Version | Beschreibung
--- | ---
8.0.21, 8.1.8, 8.2.0 | Wenn in `datetime` NULL-Bytes übergeben werden, wird nun ein ValueError geworfen; vorher wurde dies stillschweigend ignoriert.
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 date_parse_from_format()-Beispiel

`<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Array
    (
        [year] => 2009
        [month] => 1
        [day] => 6
        [hour] => 13
        [minute] => 0
        [second] => 0
        [fraction] => 0
        [warning_count] => 0
        [warnings] => Array
            (
            )

        [error_count] => 0
        [errors] => Array
            (
            )

        [is_localtime] => 1
        [zone_type] => 1
        [zone] => 3600
        [is_dst] =>
    )

Beispiel #2 date_parse_from_format()-Beispiel mit Warnungen

`<?php
$date = "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);
echo "Anzahl der Warnungen: ", $parsed['warning_count'], "\n";
foreach ($parsed['warnings'] as $position => $message) {
echo "\tAn Position {$position}: {$message}\n";
}`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Anzahl der Warnungen: 1
    	An Position 23: The parsed time was invalid

Beispiel #3 date_parse_from_format()-Beispiel mit Fehlern

`<?php
$date = "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);
echo "Anzahl der Fehler: ", $parsed['error_count'], "\n";
foreach ($parsed['errors'] as $position => $message) {
echo "\tAn Position {$position}: {$message}\n";
}`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Anzahl der Fehler: 3
    	An Position 15: A two digit hour could not be found
    	An Position 19: Not enough data available to satisfy format

### Siehe auch

- DateTimeImmutable::createFromFormat() - Wertet eine Zeitangabe gemäß dem angegebenen Format aus
- checkdate() - Prüft ein Gregorianisches Datum auf Gültigkeit

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