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:
Das sind zwar Tage, aber in Monate lässt sich das locker abwandeln.
HTH
Nessus
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!
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 ;)
<?
$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 ;)

