hi!
ich kenne dafuer keine fertige php-funktion, aber mit date() kann man so einiges erreichen:
folgende funktion subtrahiert einfach paarweise die einzelnen zeiteinheiten voneinander ab: also jetziges jahr minus geburtsjahr, jetziger monat minus geburtsmonat, usw.
function timeDiffToNow($then_y, $then_m, $then_d, $then_h, $then_min){
$now_y=date("Y");
$now_m=date("n");
$now_d=date("j");
$now_h=date("G");
$now_min=date("i");
$diff_y=$now_y-$then_y;
$diff_m=$now_m-$then_m;
$diff_d=$now_d-$then_d;
$diff_h=$now_h-$then_h;
$diff_min=$now_min-$then_min;
if($diff_min<0){
$diff_min+=60;
$diff_h--;
}
if($diff_h<0){
$diff_h+=24;
$diff_d--;
}
if($diff_d<0){
$diff_d+=date("t", mktime(0,0,0,1, $then_m, $then_y));
$diff_m--;
}
if($diff_m<0){
$diff_m+=12;
$diff_y--;
}
print $diff_y."-".$diff_m."-".$diff_d.", ".$diff_h.":".$diff_min;
}
timeDiffToNow(1985, 12, 8, 13, 40);
zudem muessen noch die uebertrege beruecksichtigt werden, d.h. die differenz zwischen 13.59 und 14.00 ist nicht 1 stunde und -59 minuten, sondern eben nur eine minute. das wird mit den if-abfragen bewerkstelligt. wie man sieht, ist das bei den monaten nicht ganz so einfach, da jene unterschiedlich lang sind.
schwierig wird's bei solchen abstaenden wie z.b. dem zwischen 30.april und 31.mai: 1 monat und 1 tag oder 31 tage? das ist dann ansichtssache...
der code wuerde ersteres ausgeben.
prost
seth
ps. hab den code uebrigens noch nicht oft getestet, solltest ihn also nochmal genau durchgehen.
pps. ach so, du wolltest ja noch die wochen ausgeben... ok, das wuerde dann mit modulo-rechnung gehen: der ganzzahlige anteil von $diff_d/7 liefert die wochen und $diff_d%7 die restlichen tage.
ppps. uebrigens: glaubst du, dass deine geplante anzeige irgendjemanden interessiert? imho ist sowas eher sinnfrei. ;-)