Frage zum Berechnen des Alters

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
LuLa
Mitglied
Beiträge: 290
Registriert: 14.02.2004 12:26

Frage zum Berechnen des Alters

Beitrag 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
diegoriv
Mitglied
Beiträge: 115
Registriert: 09.08.2005 10:21
Kontaktdaten:

Beitrag von diegoriv »

ist das nicht so viel einfacher

Code: Alles auswählen

$geburtstag = date("Y") - $jahr; 
****************************************
Alpinum.at - Forum für Bergsteiger
****************************************
Benutzeravatar
LuLa
Mitglied
Beiträge: 290
Registriert: 14.02.2004 12:26

Beitrag von LuLa »

Habe die Lösung mittlerweile gefunden:
http://www.zend.com/codex.php?id=1206&single=1
Magic_Mike
Mitglied
Beiträge: 2
Registriert: 09.02.2006 21:28

Beitrag 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
diegoriv
Mitglied
Beiträge: 115
Registriert: 09.08.2005 10:21
Kontaktdaten:

Beitrag 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.
****************************************
Alpinum.at - Forum für Bergsteiger
****************************************
Antworten

Zurück zu „Coding & Technik“