phpbar.de logo

Mailinglisten-Archive

[php] Wandeln von Datumseingaben (mittles Funktion?)

[php] Wandeln von Datumseingaben (mittles Funktion?)

Sebastian Tobias Mendel genannt Mendelsohn lists at sebastianmendel.de
Fre Sep 5 10:18:00 CEST 2003


> In einer Tabelle soll das Datum im Format "DATE (0000-00-00)" abgelegt
> werden. Am Format will ich nichts ändern.
> 
> Momentan nehme ich beim Einfügen das dt. Datumformat (05.09.2003)
> mittels "substr()" auseinander und setzte es wie benötigt wieder
> zusammen.
> 
> Doch wie kann ich nun auf andere (weil fälschlicherweise) eingegebene
> Delimeter überprüfen, bzw. ob die Tagesangabe/Monatsangabe mit "0"
> beginnt, das Jahr 2- oder 4-stellig ist usw.?
> 
> Und, dann muss ich es auch vom MySQL-Format wieder ins dt.
> bringen.können.
> 
> Hat sich schonmal jemand damit auseinandergesetzt? Oder, gibt es gar
> doch was fertiges?


es gibt da ein PEAR-Paket, das hatte aber, glaube ich, diese Funktionen 
nicht, deshalb habe ich mir mal selber was gemacht:

wandelt amerikanische(m/d/y) und DIN(d.m.y) Datumsformate
in ISO(YYYY-MM-DD) um

erwartet allerdings eine fehlerfreies Format!
und nimmt bei fehlendem Jahrhundert, also 03 statt 2003, das aktuelle 
Jahrhundert als gegeben!

function Date2Iso($datestring)
{
     $datestring = trim($datestring);
     if ( preg_match('|\.|', $datestring) )
     {
         // date is in form DD.MM.YYYY or D.M.YY
         $date = explode('.', $datestring);
         if ( strlen($date[2]) == 2 )
         {
             // no century givven, so we take the current
             $date[2] = strftime("%C") . $date[2];
         }
         $day = $date[0];
         $month = $date[1];
         $year = $date[2];
     }
     elseif ( preg_match('|\/|', $datestring) )
     {
         // date is in form m/d/y
         $date = explode('/', $datestring);
         if ( strlen($date[2]) == 2 )
         {
             // no century givven, so we take the current
             $date[2] = strftime("%C") . $date[2];
         }
         $day = $date[1];
         $month = $date[0];
         $year = $date[2];
     }
     elseif ( preg_match('|\-|', $datestring) )
     {
         // date is in form YYYY-MM-DD
         $date = explode('-', $datestring);
         if ( strlen($date[0]) == 2 )
         {
             // no century givven, so we take the current
             $date[0] = strftime("%C") . $date[0];
         }
         $day = $date[2];
         $month = $date[1];
         $year = $date[0];
     }
     else
     {
         return false;
     }

     $datestring = sprintf("%04d-%02d-%02d", $year, $month, $day);
     return $datestring;
}

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com


php::bar PHP Wiki   -   Listenarchive