PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geburtstag -> Alter



hannibal_2
13-04-2003, 17:46
Hallo zusammen,

Ich arbeite grad an einem Membersystem und ich möchte gerne das Geburtsdatum und das Alter ausgeben lassen. Das Alter soll sich aber aus logischen Gründen automatisch berechnen...
Wie krieg man das hin?

Mfg

Alexander

magpie
13-04-2003, 23:28
Ich nehm an dass das Geburtsdatum irgendwo gespeichert ist.

1.
Lies mit

$date = getdate();
$toyear = $date['year'];
Das aktuelle Jahr aus.

2.
Hol das Geburtsdatum und teil den String mit explode
Bsp.

$geb = explode('.',"13.07.1980");
und lies das Jahr aus

$gebjahr = $geb[2];

3.
Die beiden Datumswerde verrechnen

$alter = $toyear - $gebjahr;
echo $alter;

Infos zu explode findest du hier http://www.php.net/manual/de/function.explode.php


magpie

hannibal_2
14-04-2003, 10:12
hi,
und danke erstmal, aber was ist eigendlich wenn man noch nicht geburtstag hatte... -> z.B. bei mir: 22.08.1985 -> 17


<?php
$date = getdate();
$toyear = $date['year'];
$geb = explode('.',"22.08.1985");
$gebjahr = $geb[2];
$alter = $toyear - $gebjahr;
echo $alter;
?>

gibt dann 18...

Alex

mehlvogel
14-04-2003, 10:51
Am idealsten wäre es wenn du die Zeit als Unixtimestamp hättest, dann könntest du einfach



$heute = time();
$alter = $heute - $geburtstags_timestamp;


berechnen, in $alter steht dann das Alter in Sekunden, ein paar Divisionen bringen dann Jahre, Monate, Tage, Sekunden, Minuten , etc ;)

Jana
14-04-2003, 12:15
Der timestamp ist aber nur zwischen 1970 und 2038 definiert.
Was machst du mit Leuten, die vor 1970 geboren sind?

Hier gibt es bei pear.net das Package Date.
Mit $mydatum = new Date_Calc;
$tagezahl = $mydatum -> dateToDays($day,$month,$year);
kannst du dir die Tagezahl bezüglich eines weit entfernten Datum errechnen lassen.

Damit umgeht man den zeitlich begrenzten timestamp.

mehlvogel
14-04-2003, 20:37
@Jana: das hatte ich echt übersehn... meine meinung über Pear hab ich oft genug dargestellt, ich mag es einfach nicht, aber nun gut.. .

Wenn du selber programmieren woillst, musst du halt den Monat / Tag auch vergleichen.




<?php

$date = getdate();
$toyear = $date['year'];
$geb = explode('.',"22.08.1985");
$gebjahr = $geb[2];
$alter = $toyear - $gebjahr;
if ((int)$geb[1] > (int)$date['month']) $alter--;
if ((int)$geb[1] == (int)$date['month'] && (int)$geb[0] > (int)$date['day']) $alter--;
echo $alter;

?>


Bin mir bei den Arrayelementen von "date" nicht ganz sicher, da ich das net so oft benutze, bzw grad zu faul war bei php.net zu suchen. Jetzt schau ich grad mal nach einer Standardphp Funktion.