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