Mailinglisten-Archive |
Hi Ralf, Am Dienstag, 17. Oktober 2006 19:13 schrieb Ralf Eggert: > Ich habe einen String und ein Datumsformat und möchte den String > anhand des Datumsformat "parsen", d.h. in seine Bestandteile > zerlegen, um danach per checkdate() zu prüfen, ob es sich dabei um > ein gültiges Datum handelt. > > Das Format soll frei angegeben werden können, solange es den > möglichen Parametern von date() entspricht. Wobei es generell nur um > Tage, Monate und Jahre gehen soll. also wenn alles möglich sein soll, wirst Du so oder so Schwierigkeiten bekommen. 05-06-07 könnte dann der 7. Juni 2005, der 5. Juni 2007 oder 6. Mai 2007 sein. Du wirst hauptsächlich das Problem haben, herauszubekommen, ob das Jahr die erste oder die letzte Angabe ist und ob von den übrigen beiden Angaben die erste der Tag oder der Monat oder umgekehrt ist. > Beispiel 1: > String: 17.10.2006 > Format: %d.%m.%Y > > Beispiel 2: > String: 2006-10-17 > Format: %Y-%m-%d > > Beispiel 3: > String: 17/10/2006 > Format: %d/%m/%Y Wie sieht es mit den Separatoren (".", "-", "/") aus? Sind die auch beliebig? Oder willst Du nicht doch sinnvolle und erlaubte Formate definieren, die Dir die unzweideutige Verarbeitung der Datumsangaben ermöglichen? > Für Beispiel 1 wäre dies eine mögliche Lösung: > list($day, $month, $year) = sscanf($value, '%d.%d.%d'); > > Für Beispiel 2 wäre dies eine mögliche Lösung: > list($year, $month, $day) = sscanf($value, '%d-%d-%d'); > > Und für Beispiel 3 wäre dies eine mögliche Lösung: > list($day, $month, $year) = sscanf($value, '%d/%d/%d'); Wenn die möglichen Formate definiert und eindeutig identifizierbar wären, könntest Du pro Format den Separator und die Reihenfolge von Tag, Monat und Jahr in einem assoziativen Array hinterlegen und diese dann in der list(...) = sscanf(...)-Zeile einsetzen. Sollte hingegen alles beliebig sein, wirst Du im Zweifelsfall nicht mal als Mensch in der Lage sein, das Datum korrekt zu zerlegen. ;-) Sollte ich was falsch verstanden haben, bitte ich Dich, Deine Frage zu konkretisieren. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive