Start · Sprachen · PHP · Referenz · date_parse

date_parse

Funktion

Zerlegt einen Datums-/Zeitstring und gibt ein assoziatives Array mit allen erkannten Komponenten (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Zeitzone usw.) zurück.

seit PHP 5.2.0 Kategorie: date

Signatur

date_parse(string $datetime): array|false

Beschreibung

date_parse() analysiert einen Datums- oder Zeitstring und gibt ein detailliertes assoziatives Array zurück, das alle erkannten Datumskomponenten wie year, month, day, hour, minute, second, fraction sowie Zeitzonenangaben enthält. Die Funktion verwendet intern dieselbe Parsing-Engine wie strtotime() und versteht alle von PHP unterstützten Datumsformate.

Zusätzlich zu den Datumswerten enthält das zurückgegebene Array die Schlüssel warning_count, warnings, error_count und errors, über die sich Parsing-Probleme erkennen und auswerten lassen. Das ist besonders nützlich, wenn Benutzereingaben validiert werden sollen, da Fehler und Warnungen differenziert vorliegen.

Nicht erkannte oder fehlende Komponenten werden mit dem Wert false belegt, sodass sich leicht prüfen lässt, welche Felder tatsächlich im Eingabestring vorhanden waren. Die Funktion eignet sich gut für die Analyse und Validierung von Datumseingaben, bevor diese weiterverarbeitet oder in einer Datenbank gespeichert werden.

Für Strings in einem bekannten, festen Format empfiehlt sich alternativ date_parse_from_format(), das präziser arbeitet und weniger Mehrdeutigkeiten beim Parsing zulässt.

Parameter

Name Typ Default Beschreibung
$datetime Pflicht string Ein Datums- und/oder Zeitstring in einem von PHP unterstützten Format, z. B. '2024-06-15 14:30:00', 'next Monday' oder '2024-06-15T14:30:00+02:00'.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit den Schlüsseln year, month, day, hour, minute, second, fraction, warning_count, warnings, error_count, errors, is_localtime sowie ggf. Zeitzonenangaben zurück. Nicht erkannte Komponenten erhalten den Wert false. Bei einem grundlegenden Fehler im String wird false zurückgegeben.

Beispiele

Datum und Zeit parsen und Komponenten auslesen

<?php
$result = date_parse('2024-06-15 14:30:45.5');

echo 'Jahr:    ' . $result['year']     . PHP_EOL;
echo 'Monat:   ' . $result['month']    . PHP_EOL;
echo 'Tag:     ' . $result['day']      . PHP_EOL;
echo 'Stunde:  ' . $result['hour']     . PHP_EOL;
echo 'Minute:  ' . $result['minute']   . PHP_EOL;
echo 'Sekunde: ' . $result['second']   . PHP_EOL;
echo 'Bruchte: ' . $result['fraction'] . PHP_EOL;
echo 'Fehler:  ' . $result['error_count'] . PHP_EOL;
Jahr: 2024 Monat: 6 Tag: 15 Stunde: 14 Minute: 30 Sekunde: 45 Bruchte: 0.5 Fehler: 0

Fehler und Warnungen beim Parsen erkennen

<?php
$result = date_parse('2024-13-45 25:99:00');

if ($result['error_count'] > 0) {
    echo 'Fehler beim Parsen:' . PHP_EOL;
    foreach ($result['errors'] as $position => $message) {
        echo '  Position ' . $position . ': ' . $message . PHP_EOL;
    }
} else {
    echo 'Kein Fehler.' . PHP_EOL;
}

if ($result['warning_count'] > 0) {
    echo 'Warnungen:' . PHP_EOL;
    foreach ($result['warnings'] as $position => $message) {
        echo '  Position ' . $position . ': ' . $message . PHP_EOL;
    }
}
Fehler beim Parsen: Position 8: Unexpected character Warnungen: Position 6: The parsed date was invalid

Zeitzone aus ISO-8601-String extrahieren

<?php
$result = date_parse('2024-06-15T14:30:00+02:00');

if ($result['is_localtime']) {
    echo 'Zeitzonentyp: ' . $result['zone_type'] . PHP_EOL;
    echo 'Offset (Sek): ' . $result['zone']       . PHP_EOL;
}
Zeitzonentyp: 1 Offset (Sek): -7200

// Wichtig · Fallstricke

Mehrdeutige Eingaben: Da date_parse() dieselbe Parsing-Engine wie strtotime() nutzt, können mehrdeutige Formate wie '01/02/03' zu unerwarteten Ergebnissen führen. Für Eingaben in einem definierten Format sollte stattdessen date_parse_from_format() verwendet werden.

Fehlende Komponenten: Nicht im String enthaltene Komponenten (z. B. Uhrzeit bei reinen Datumsstrings) werden im Array mit false belegt, nicht mit 0 — darauf beim Vergleich achten.

Benutzereingaben: Die Funktion eignet sich zur Vorvalidierung von Nutzereingaben; error_count und warning_count sollten immer geprüft werden, bevor die Werte weiterverarbeitet werden.