Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Monatsdifferenz zwischen zwei Zeiten





Frage

Hallo, ich habe folgendes Problem. Ich habe ein Anfangsdatum, das immer gleich bleibt (z.B. 1.11.2004). Nun möchte ich, dass wenn eine Seite aufgerufen wird, die Anzahl der Monate vom jetzigen Zeitpunkt bis zu dem Anfangsdatum ermittelt wird. Also z.B. Differenz zwischen 1.11.04 und 1.2.05 sind 4 Monate. Also soweit bin ich jetzt, aber komme nicht weiter: [code] $timestampNovember = mktime(0,0,0,11,1,2004); //$timestampHeute = time(); $timestampHeute=date("U"); $differenz=$timestampHeute-$timestampNovember; [/code] Jetzt müsste ich ja die Sekunden dieses Zeitraums raus haben, oder? Wie bekomme ich nun die Anzahl der Monate? Danke!

Antwort 1 von Nessus

Hi,

schaue mal hier:
$utimeDatum1= mktime(0, 0, 0, 1, 1, 2000);  // 1. Januar 2000
$utimeDatum2= time ();                      // Jetzt

$diff= $utimeDatum2 - $utimeDatum1;
printf ("Seit dem %s sind %d Tage bis heute vergangen
",
  date (´d.m.Y´, $utimeDatum1),
  ($diff / 86400)
); 


Das sind zwar Tage, aber in Monate lässt sich das locker abwandeln.

HTH

Nessus

Antwort 2 von kathrin77

Danke erst mal! Also wieviel Tage das sind hatte ich auch herausgefunden. Probleme hat mir aber bereitet, wie ich ausrechne, wie viele Monate das sind.

Ich denke, ich habs jetzt hinbekommen, ist aber bestimmt viel zu kompliziert :-(. Vielleicht gibts noch nen einfacheren Weg? Oder ist mein Rechnung vielleicht doch falsch? Hier mal der Code:

$timestampNovember = mktime(0,0,0,11,1,2004);
$timestampHeute=date("U");
$differenz=$timestampHeute-$timestampNovember;
$tage = floor($differenz/86400); //soviel Tage sind das
$Monate= array(1 => ´31´, 2 => ´28´, 3 => ´31´, 4 => ´30´, 5 => ´31´, 6 => ´30´, 7 => ´31´, 8 => ´31´, 9 => ´30´,
10 => ´31´, 11 => ´30´, 12 => ´31´);
$aktMonat= date("n"); //Aktueller Monat
$anzahl=0;
$temptage=$tage;

//es werden vom aktuellen Monat aus immer die Tage eines Monats von $tagtemp
//abgezogen, bis es nicht mehr geht (negativ)
while ($temptage!=0)
{
if ($Monate[$aktMonat]<$temptage) $temptage=$temptage-$Monate[$aktMonat];
else $temptage=0;

$anzahl=$anzahl+1; //zählt die Anzahl der Monate hoch

if ($aktMonat!=1) $aktMonat=$aktMonat-1;
else $aktMonat=12;
}

Freue mich über Hinweise!

Antwort 3 von |-|Andi|-|

Nimm mal das:
<?
$fixdate="12.12.2001";
$actm=date("m");
$acty=date("Y");
$oldm=$fixdate{3};
$oldm.=$fixdate{4};
$oldy=$fixdate{6};
$oldy.=$fixdate{7};
$oldy.=$fixdate{8};
$oldy.=$fixdate{9};

$monthy=(($acty-$oldy)*12);
$month=12-$oldm+$actm+$monthy;
echo"zwischen $fixdate bis heute liegen $month Monate";
?>

geht sicher noch einfacher ;)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: