phpbar.de logo

Mailinglisten-Archive

[php] Datumstring anhand Format parsen

[php] Datumstring anhand Format parsen

Ralf Eggert r.eggert at travello.de
Die Okt 17 20:37:45 CEST 2006


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