Funktion: datum()
datum1() scheitert bei PHP 5.3 von 1&1 an: gregoriantojd() und cal_from_jd()
datum2() liefert einen Ersatz
 
<?PHP
// Der deutsche Tagname des Datums kann bei Datum 2 über die Funktion wochentag($tag,$mon,$jahr) ermittelt werden.
// Sie berechnet eine Tagesnummer 0-7
// Achtung, keine Fehlermeldung, wenn $tagimjahr größer ist als 365 bzw. 366 im Schaltjahr.

// globale Variable für beide Funktionen
$tagnam = array('-', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.','So.');
$tnam= "-"; $tag = 0; $mon = 0;


// datum() ------------------------------------------------------------------ mit gregoriantojd //
// Rechnet den Tag im Jahr in ein Datum tag, mon, jahr zurück
function datum1($tagimjahr, $jahr){
   global $tagnam; global $tnam; global $tag; global $mon;
   $jd= gregoriantojd(1, 1, $jahr) + $tagimjahr-1;
   $ary= cal_from_jd( $jd , CAL_GREGORIAN);
   $tag= $ary[day]; $mon= $ary[month]; $jahr=$ary[year];
   if($ary[dow]==0) $ary[dow]=7;
   // $tnam= $tagnam[$ary[dow]];
}


// datum() ------------------------------------------------------------------ alternativ //
// (nur für tagimjahr2())
$monattage = array(0,31,28,31,30,31,30,31,31,30,31,30,31);

// (nur für datum2()) .. Berechnet ob das Jahr ein Schaltjahr ist
function schaltjahr($jahr){
   if(($jahr % 400) == 0 || (($jahr % 4) == 0 && ($jahr % 100) != 0)) return 1;
   else return 0;
}

// Rechnet den Tag im Jahr in ein Datum tag, mon, jahr zurück
function datum2($tagimjahr, $jahr){
   global $monattage; global $tagnam; global $tnam; global $tag; global $mon;
   for($n=1; $tagimjahr > $monattage[$n]; $n++){
      $sub=$monattage[$n];
      if($n==2) {$sub= $monattage[$n]+schaltjahr($jahr);}
      $tagimjahr= $tagimjahr-$sub;
   }
$tag= $tagimjahr; $mon= $n;
// $tnam= $tagnam[wochentag($tag,$mon,$jahr)];
}


// ---------------------------------------- Test --------------------------- //


$jahr= 2016; $tagimjahr= 366;
echo $jahr.' -> '.schaltjahr($jahr).'<BR>';

datum1($tagimjahr, $jahr);
echo 'datum1: '.$tnam.' '.$tag.'.'.$mon.'.'.$jahr.'<BR>';

datum2($tagimjahr, $jahr);
echo 'datum2: '.$tnam.' '.$tag.'.'.$mon.'.'.$jahr.'<BR>';
?>