Mailinglisten-Archive |
Tim Hildebrandt wrote: > Ich lasse bei einem Onlineformular ein Datum angeben verwende später > folgenden Befehl: > > $DateArray = split("\.", $formularfeld); > $vardat = date("Y-m-d", > mktime(0,0,0,$DateArray[1],$DateArray[0],$DateArray[2])); > > um das Datum in ein von mir gewünschtes Format zu bekommen. Danke für die > bisherige > Hildfe übrigens! Dennoch hat dieser Befehl noch so ein kleines Problem: > > Bei Jahresangaben unterhalb von 1970 kommt ein allgemeiner Fehler. > Warum und wie kann man das umgehen? mktime() liefert einen Unix Timestamp. Dies sind die seit dem 01.01.1970 verstrichenen Sekunden. Der Wert 0 entspricht dem 01.01.1970. mktime() kann keine Werte vor diesem Datum abbilden. Auch strtotime() baut auf einem Timestamp auf. Anders hingegen checkdate(), dies erlaub einen viel größeren Rahmen, noch größer als date() selbst: ** Accept parameter in range 0..1000 interpreted as 1900..2900 ** (if 100 is given, it means year 2000) ** or in range 1001..9999 interpreted as is (this will store ** negative tm_year for years in range 1001..1899) ** This function is then Y2K ready, and accepts a wide range of ** dates including the whole gregorian calendar. ** But it cannot represent ancestral dates prior to year 1001. */ (datetime.c) Langer Rede kurzer Sinn, Du mußt selber rechnen oder die Eingabe dichtnageln. Ulf
php::bar PHP Wiki - Listenarchive