Sönke Tesch: unexpected error in date()

Beitrag lesen

ich entwickle einmal auf XP mit der PHP Version 4.2.3 und unter UNIX mit der PHP Version 4.1.2

$datum[$i] = mktime (0, 0, 0, $LM[$i], $LT[$i], $jahr[$i] );
$datum[$i] = date("Y-m-d", $datum);

muss es hier nicht heißen date("Y-m-d", $datum[$i])?

Ja. Du kannst es Dir nebenbei bemerkt auch ganz einfach machen und gleich

$datum[$i] = date("Y-m-d",mktime (0, 0, 0, $LM[$i], $LT[$i], $jahr[$i] ));

schreiben, denn Variablen lassen sich nur einige Male beschreiben, sind dann abgenutzt, damit unbrauchbar und müssen weggeworfen werden ;)

Da es anscheinend nur um eine Formatierung dreier Zahlen geht, wäre es vielleicht sogar sinnvoll statt date() und mktime() einfach sprintf("%04d-%02d-%02d",$jahr,$monat,$tag) nehmen. Du mußt dann allerdings 100%ig sicherstellen, daß in dem Quelldaten kein Murks steht, wobei diese Sicherung allerdings wegen der detailieren Fehlermeldung ("Dieser Monat hat keine 50 Tage") manuell sogar günstiger ist, als wenn mktime() ungefragt die Eingabe korrigiert.
Aber das nur als Anregung.

Unter Version 4.1.2 gehts.

date("Y-m-d", $datum[$i] ) unter PHP Version 4.2.3 nicht.
Warning: unexpected error in date() in

Prüfe, ob die Einstellungen zur Fehlermeldungsfreudigkeit von PHP auf beiden Systemen gleich sind. Die Übergabe von $datum ist in jedem Fall unsinnig, denn date() kann mit einem Feld eigentlich nichts anfangen. Vielleicht ist's auch ein Fehler in 4.1.2.

Gruß,
  soenk.e