Alter unter Windows berechnen ? :)
-
Hi,
ich will das Alter von einem bestimmten Datum berechnen lassen.
Dazu habe ich folgenden Code:$tag = 1; $monat = 6; $jahr = 1950; $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); echo mktime(0,0,0,$monat,$tag,$jahr); $alter = intval(($jetzt - $gebur) / (3600 * 24 * 365)); echo "Du bist $alter Jahre alt.";
Bei diesem Code kommt folgendes:
Warning: mktime(): Windows does not support negative values for this function in c:\development\interpedia\projects\egl\quellcodes\e1\public\index.php on line 16
-1Du bist 35 Jahre alt.Liegt wohl daran, dass mktime nur mit Daten über 1970 auskommt.
Kann man da was machen ?
Ciao
-
Falls es nur um das Alter geht:
$alter = date('Y') - $jahr; // falls man in diesem Jahr noch nicht Geburtstag hatte wieder ein Jahr abziehen if(mktime(0,0,0,$monat,$tag+1) < time()) { $alter--; }
-
hm, hat irgendwie nicht ganz funktioniert ....
folgender Code müsste funktionieren:
$year = 1985; $day = 30; $month = 09; $age = date('Y') - $year; // falls man in diesem Jahr noch nicht Geburtstag hatte wieder ein Jahr abziehen #echo mktime(0,0,0,$month,$day); $diff = (mktime(0,0,0,$month,$day,date('Y') ) - mktime(0,0,0,0,0,date('Y'))); $curr_diff = (mktime(0,0,0,(int)date('m'),(int)date('d'),date('Y') ) - mktime(0,0,0,0,0,date('Y'))); if( $diff > $curr_diff ) $age--;
Cioa
-
function getalter($date_of_birth) { list ($year, $month, $day) = explode('-', $date_of_birth); $age = date('Y') - $year; if (date('m') < $month) $age--; elseif (date('d') < $day) $age--; return $age; }
-
Sorry, es muss natürlich statt < > heißen:
$alter = date('Y') - $jahr; // falls man in diesem Jahr noch nicht Geburtstag hatte wieder ein Jahr abziehen if(mktime(0,0,0,$monat,$tag+1) > time()) { $alter--; }
@Unix-Tom: Wenn der Monat größer, aber der Tag kleiner ist, liefert dein Code das falsche Ergebnis. Denn die 2. Abfrage darfst du nur machen, wenn der Monat gleich ist.