Seite 1 von 1

Frage zum Berechnen des Alters

Verfasst: 09.02.2006 13:23
von LuLa
Hallo,

habe mal eine Frage:

Mit...

Code: Alles auswählen

<?
   $tag   = 1;
   $monat = 6;
   $jahr  = 1980;

   $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
   $geburtstag = mktime(0,0,0,$monat,$tag,$jahr);
   $alter   = intval(($jetzt - $geburtstag) / (3600 * 24 * 365));

   echo $jetzt, " ", $geburtstag;
   echo "Du bist $alter Jahre alt.";
?>
... errechne ich das Alter einer Person. Aber ändert mal das Geburtsjahr auf 1960! Die Person wird nie älter als 36 (Stand: 2006), weil sich die date-Funktion ja auf die vergangenen Sekunden seit 1970 bezieht. Kennt Ihr eine Lösung dieses Problems? Habe schon brav gegoogelt, aber nichts gefunden.


LG
LuLa

Verfasst: 09.02.2006 13:55
von diegoriv
ist das nicht so viel einfacher

Code: Alles auswählen

$geburtstag = date("Y") - $jahr; 

Verfasst: 09.02.2006 13:57
von LuLa
Habe die Lösung mittlerweile gefunden:
http://www.zend.com/codex.php?id=1206&single=1

Verfasst: 09.02.2006 21:53
von Magic_Mike
diegoriv hat geschrieben:ist das nicht so viel einfacher

Code: Alles auswählen

$geburtstag = date("Y") - $jahr; 
Annahme: ich bin am 15.05.1976 geboren und wir haben das Jahr 2006.
Demzufolge wäre ich 2006-1976=30 Jahre alt, obwohl ich das erst Mitte Mai werde.

Wenn dann müsste man es schon so machen (meiner Meinung nach)
$Jahr = Geburtsjahr;
$Monat = Geburtsmonat;
$Tag = Geburtstag;
$Jahr2 = date("Y");
$Monat2 = date("M");
$Tag2 = date ("D");

Wenn $Monat2 kleiner $Monat
Dann $Alter = $Jahr2 - $Jahr
Ende Wenn

Wenn $Monat2 == $Monat and $Tag2 kleiner $Tag
Dann $Alter = $Jahr2 - $Jahr - 1
Ende Wenn

Wenn $Monat2 == $Monat and $Tag2 größer gleich $Tag
Dann $Alter = $Jahr2 - $Jahr
Ende Wenn

Wenn $Monat2 größer $Monat
Dann $Alter = $Jahr2 - $Jahr
Ende Wenn

PS: nur mal so eben hingekritzelt. Von der Logik her müsste es aber passen

Verfasst: 10.02.2006 09:05
von diegoriv
klar hätte man das verfeinern müssen. Es ging nur mal darum, sinnvolle Werte für vor 1970 geborene zubekommen. Und so wie ich es geschrieben habe ist es ja auch im Link, den LuLa angegeben hat, umgesetzt.