Datum ausrechnen -> in eine Variable (int) speichern

Briefkasten

Erfahrenes Mitglied
Hallo,

auf meiner Homepage soll, jedes Jahr zu einem bestimmten Zeitpunkt eine spezielle Aktion durchgeführt werden.

Das Datum wird in die DB gespeichert als int. Höchst zulässige Zahl ist 365.

Ich hole die Zahl aus der DB z.B.:45

Mit folgender Funktion ermittle ich den Tag und Monat:

PHP:
		if($number<31)
		{
			$months = 1;
			$day = $number;
		}
		else if($number<59)
		{
			$months = 2;
			$day = $number - 28;
		}
		else if($number<90)
		{
			$months = 3;
			$day = $number - 59;
		}
		else if($number<120)
		{
			$months = 4;
			$day = $number - 90;
		}
		else if($number<151)
		{
			$day = $number -120;
			$months = 5;
		}
		else if($number<181)
		{
			$day = $number - 151;
			$months = 6;
		}
		else if($number<212)
		{
			$day = $number -181;
			$months = 7;
		}
		else if($number<243)
		{
			$day = $number -212;
			$months = 8;
		}
		else if($number<273)
		{
			$day = $number -243;
			$months = 9;
		}
		else if($number<304)
		{
			$day = $number-273;
			$months = 10;
		}
		else if($number<334)
		{
			$day = $number -304;
			$months = 11;
		}
		else if($number<365)
		{
			$day = $number -334;
			$months = 12;
		}
		
		return $da = Array($day, $months);
	
	}

Ist ziemlich unschön weils hardgecodet ist.

Und zurück rechnen tu ich so:

PHP:
if($month==1)
		{
			return $day = $month + $day;
		}
		else if($month==2)
		{
			return $day = 31+$day;
		}
		else if($month==3)
		{
			return $day = 59 + $day;
		}
		else if($month==4)
		{
			return $day = 90 + $day;
		}
		else if($month==5)
		{
			return $day = 120 + $day;
		}
		else if($month==6)
		{
			return $day = 151 + $day;
		}
		else if($month==7)
		{
			return $day = 181 + $day;
		}
		else if($month==8)
		{
			return $day = 212 + $day;
		}
		else if($month==9)
		{
			return $day = 243 + $day;
		}
		else if($month==10)
		{
			return $day = 273 + $day;
		}
		else if($month==11)
		{
			return $day = 304 + $day;
		}
		else if($month==12)
		{
			return $day = 334 + $day;
		}

Das zurück rechnen mit Tag, Monat funktioniert nicht Richtig. Ich bekomme immer die falschen Werte. Weiß jemand wie ich das besser machen kann?. Vor allem, die vielen else if() sind unschön.

mfg
 
Guten Morgen,

darf man denn fragen was für ein Datum berechnet wird? Eventuell lässt sich eine einfache Lösung finden.

Gruß soyo
 
also mit hilfe von date('z') bekommst du den aktuellen Jahrestag. Und in Verbindung mit mktime() kannst du es einfacher auf von jedem beliebigem Datum dir zurückgeben lassen.

PHP:
date("z", mktime(0, 0, 0, 12, 31, 2007));
für den 31.12. zB ,)
 
Du schreibst, dass Du zu einer besimmten Zeit Event`s anzeigen lassen willst.
Warum schreibst Du die nicht in eine Datenbank-Tabelle die entprechende Daten
mit Start und Ende des Event`s und benutzt die Datumsfunktionen von PHP?

Hier ein Beispiel:

PHP:
<?php   
   // Beispiel: Aus der Datenbank kommt.
   $event_start = '01.06.2007';
   $event_stop = '31.09.2007';

   $time1 = explode('.',$event_start);
   $time2 = explode('.',$event_stop);

   $start = mktime(0,0,0,$time1[1],$time1[0],$time1[2]);
   $stop = mktime(0,0,0,$time2[1],$time2[0],$time2[2]);

   if(time() >= $start &&  time() <= $stop)
   {
      echo 'Lieber User, wir haben Sommer!';
   }
?>
 
Zurück