phpbar.de logo

Mailinglisten-Archive

[php] checkdate geht nicht

[php] checkdate geht nicht

Ulf Wendel ulf_(at)_redsys.de
Mon, 19 Jun 2000 08:29:39 +0200


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