Altersberechnung- paar tage ungenau

dave_

Erfahrenes Mitglied
hm ich hatte das schonmal gemacht da hats geklappt, aber seht euch mal das folgende beispiel an

PHP:
//heute ist der 30.3.2003 mal angenommen

$geboren = strtotime("1985-4-2"); //würde als in 3 tagen erst 18 werden
echo floor((time() - $geboren) / (365*24*3600)); //ergibt aber 18

hm ?
 
Natürlich berücksichtigen strtotime und mktime das... aber du berechnest ja die Differenz aus zwei Zeitangaben und teilst diese dann durch 365 Tage. Da könntest du genau so gut zwei Wasserflaschen mit je 1l Wasser und eine mit 2l Wasser hinstellen und sagen, dass das vier Flaschen sein müssen, weil (2*1l+2l)/1l ja 4 ergibt... ;)

Umgehen kannst du das ganze, indem du zur Berechnung die Jahres-, Monats- und Tagesangaben verwendest und mit ihnen ein bisschen rumrechnest (Differenz der Jahre bilden, dann die Monate und gegebenenfalls noch die Tage vergleichen und entsprechend nachkorrigieren...)
 
Ich hatte sowas in der Schule für Informatik mal in TurboPascal geschrieben. Da habe ich das aktuelle datum & das datum auf das zurückgerechnet werden soll in sekunden umgerechnet und dann voneinander abgezogen. Dann kommt ja die Differenz in Sekunden raus.
Das braucht man dann nur noch in die entsprechende Jahres/monats/tagesanzahl umzurechnen - fertig.
 
hmm

also wenn ich mir den rest ausgeben lasse (wenn ich % verwende) ergibt die restumme ca 110 stunden (geburtstag wäre 1.4, also morgen)

sorry aber ich verstehe einfach nicht ganz wie ich das jetzt umrechnen soll.
 
also du nimmst das ergebinis
x modulo 365 = Tage
das ganze nimmst du dann nochmal
x div 365 = Rest

Rest modulo 12 = Tage usw.

Ist jetzt nicht so ganz durchdacht..aber das Prinzip sollte klare sein.
 
*kram* *wühl* *such*
Ah, wusst ich's doch, dass ich sowas schon mal gemacht hab...
PHP:
// expected format: YYYY-MM-DD
function age($past)
{
	$now = date("Y-n-j");

	list($year1, $month1, $day1) = explode("-", $past);
	list($year2, $month2, $day2) = explode("-", $now);

	$age = $year2 - $year1;
	if (($month2 <= $month1) || (($month2 == $month1) && ($day2 < $day1))) $age--;

	return $age;
}
Hoffe du kannst damit was anfangen.
 
Zurück