Korrekte Altersberechnung

Moritz123

Erfahrenes Mitglied
Hallo allerseits,

ich stehe hier gerade schrecklich auf dem Schlauch: Ich muss eine Altersrpüfung bauen, die sicherstellt, dass der Nutzer mind. 18 Jahre alt ist.
Ok, kein Problem dachte ich mir und habe schnell mal einen Prototypen zusammengeschustert:
PHP:
$now = time();
$dob = strtotime('1993-02-01'.date('H:i:s'));
$var = 18*365*24*60*60;
echo "NOW:".$now." => ".date('d.m.Y H:i:s', $now)."<br/>";
echo "DOB:".$dob." => ".date('d.m.Y H:i:s', $dob)."<br/>";
echo "VAR:".$var."<br/>";
echo "----------------------------------------------------------------<br/>";
echo "DIFF:".($now-$dob)." < ".$var." => ".print_r((($now-$dob)<$var));

Wie im Beispiel zu erkennen, sollte jemand der am 01.02.1993 Geburtstag hat als 17jähriger identifiziert werden - daher verzichte ich auf die Rundung und schaue mir die genaue Differenz an. Leider will mir obiges Script weißmachen, dass derjenige 18 ist, was ja einfach nicht stimmt.

Hier nochmal die Ausgabe des Scripts:
Code:
NOW:1296233977 => 28.01.2011 17:59:37
DOB:728585977 => 01.02.1993 17:59:37
VAR:567648000
----------------------------------------------------------------
DIFF:567648000 < 567648000 => 1

Besten Dank für eure Unterstützung.

Schöne Grüße,

Moritz
 
Hallo,
rechne das mal anders:
(NOW-Datum - 18 Jahre) = 28.01.1993, 17:59:17; TS: 728240357
DOB = 01.02.1993, 17:59:17; TS: 728585957

Jeder der älter als 18 Jahre ist, hat einen Zeitstempel des Geburtstages, der in diesem Vergleich kleiner ist.
Die Jahre sind unterschiedlich lang und 365 Tage/Jahr ist nur ein Durchschnittswert.
 
Zuletzt bearbeitet:
Ich würde es so lösen:
PHP:
<?php
$j = date('Y');
$m = date('m');
$d = date('d');
$heutevor18jahren = date('Y-m-d',mktime(0,0,0,$m,$d,$j-18));
$datumheute = date("Y-m-d");
$gebdatum = "1993-01-30";
echo $heutevor18jahren."<br>";
echo $datumheute."<br>";
echo $gebdatum."<br>";
If ($gebdatum <= $heutevor18jahren) {
	echo "Bereits 18 Jahre";
}
?>

So sind auch Schaltjahre berücksichtig.
 
Zuletzt bearbeitet:
Zurück