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