tag zu datum ermitteln

quidnovi

Erfahrenes Mitglied
Hallo Gemeinde,

ermittle mit folgendem Code den Tag zum Datum:
PHP:
function formatausgabe($datumarray){
			 $woche = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
			 return $woche[$datumarray["wday"]];
		 }

		function mysql2date($datum){
			if ($datum == 0000-00-00){
				return;
			}
			else{
				list($jahr, $monat, $tag) = explode("-", $datum);
				$datum = mktime(0,0,0,$monat,$tag,$jahr);
				return formatausgabe(getdate($datum))   ;
			   }
			}

		echo mysql2date("2007-02-31");

Das funktioniert auch - hat nur einen gravierenden Fehler:
Es gibt den 31.02.2007 nicht! Da schreibt der Code "Samstag". Somit rechnet das Script zum Mittwoch den 28.02.2007 drei Tage dazu und gibt Samstag aus, der ja der 3.03.2007 ist.

Jetzt bitte ich Euch um Hilfe, da ich nun nicht mehr weiter weiß.

Danke im voraus
 
Prüf einfach ob das Datum wirklich existiert:
PHP:
<?php
function formatausgabe($datumarray){
             $woche = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
             return $woche[$datumarray["wday"]];
         }

        function mysql2date($datum){
            list($jahr, $monat, $tag) = explode("-", $datum);
            if ($datum == 0000-00-00){
                return;
            } elseif($datum != date("Y-m-d", mktime(0, 0, 0, $monat, $tag, $jahr))) {
                echo "Datum existiert nicht";
                exit;
            } else{
                $datum = mktime(0,0,0,$monat,$tag,$jahr);
                return formatausgabe(getdate($datum))   ;
               }
            }
        echo mysql2date("2007-02-31");  
?>
So sollte es funktionieren.
 
0000-00-00“ ist übrigens eine oktale Subtraktion (ergibt 0) und nicht mit „0000-00-00“ als Zeichenkette interpretiert identisch.
 
Zurück