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>'; ?> |