Mailinglisten-Archive |
Moin Lutz, > 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. Es wird ja an die Funktion das Format übergeben, so dass ich anhand des Formats schon erkennen könnte, an welcher Stelle Jahr, Monat und Tag liegen. Nach einigem Hin und Her Probieren habe ich nun in etwa folgendes entwickelt: $div1 = substr($dateformat, 2, 1); $div2 = substr($dateformat, 5, 1); $parts[0] = substr($dateformat, 0, 2); $parts[1] = substr($dateformat, 3, 2); $parts[2] = substr($dateformat, 6, 2); $scanformat = '%d' . $div1 . '%d' . $div2 . '%d'; $scan = sscanf($date, $scanformat); foreach($this->_parts as $partKey => $partValue) { if ('%y' == $partValue) { $year = $scan[$partKey]; } elseif ('%m' == $partValue) { $month = $scan[$partKey]; } elseif ('%d' == $partValue) { $day = $scan[$partKey]; } } if (!checkdate($month, $day, $year)) { return false; } return true; Ich baue dann wohl noch eine Prüfung ein, damit auch nur sinnvolle Datumsformate übergeben werden. Das Ganze lässt sich sicher noch optimieren... Gruß, Ralf
php::bar PHP Wiki - Listenarchive