Signatur
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
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;
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;
}
}
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;
}
// 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.