Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Alter berechnen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Alter berechnen


 
bweichel
06-12-2005, 20:49 
 
Hallo,

ich möchte das Alter seit der Geburt einer Person in Jahre, Monate und Tage getrennt ausgeben.

Dazu habe ich das Geb.-Datum mit strtotime() in einen Timestamp umgewandelt und der errechnete Timestamp von dem jetzigen Timestamp abgezogen und anschließend mit strftime() wieder als Jahr, Monat und Tag ausgegeben. Jedoch errechnet er mir das Alter nicht korrekt.


$geb_timestamp = strtotime('2005-09-21');
$timestamp = time();
$alter_timestamp = $timestamp - $geb_timestamp;
print strftime('%d-%m-%Y', $alter_timestamp);

// Ausgabe
// 18-03-1970

 
onemorenerd
06-12-2005, 21:36 
 
Na ganz so einfach gehts auch nicht. Du berechnest die Differenz aus Geburtsdatum und heute und gibst diese quasi 'plus 1.1.1970' aus.
Übrigens schon mal was von Schaltjahren gehört?

 
LukasS
06-12-2005, 21:48 
 
Meine Lösung, als anhaltspunkt.
eine Kommentierung ist bei einer soo einfachen funktion ja wohl nicht nötig. ;)


function age($jah, $mon, $tag)
{
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$gebur = mktime(0,0,0,$mon,$tag,$jah);
return $age = intval(($jetzt - $gebur) / (3600 * 24 * 365));
}

 
onemorenerd
06-12-2005, 21:57 
 
Auch ohne Berücksichtigung von Schaltjahren oder ist mir der Wein schon im Kopf angekommen?

 
Heini81
06-12-2005, 22:38 
 
Sind die Schalttage / -minuten / -sekunden nicht schon im Timestamp berücksichtigt? Müsste doch eigentlich so sein...

 
bweichel
06-12-2005, 23:09 
 
ich habe das o. g. beispiel ausprobiert und der timestamp für mein datum wird generiert. wie bekomme ich nun darauf wieder ein datum im format tag, monat, jahr? wenn ich


print strftime("%d-%m-%Y", $age);


anwende, steht bei mir 01-01-1970.

 
x4th
06-12-2005, 23:33 
 
@bweichel
Mein Lösungsansatz wäre folgender:

Wenn du von LukasS's Script die intval()-Funktion beim return weglässt, bekommst du das Lebensalter in Jahren als Dezimalbruch zurückgeliefert. Die stellen nach dem Komma kannst du dann ganz einfach mit einem Dreisatz auf Tage runterrechnen!
Monate würde ich nicht angeben, da diese versch. viele Tage haben und damit ohne Angabe des genauen Geburtstages nicht klar wird wie alt die Person jetzt wirklich ist (hoffe das ist verständlich).

 
matze91
12-10-2006, 12:33 
 
Nur wenn ich den genauen Geburtstag habe. Wie müßte dann der Code aussehen um die genaue Ausgabe auf Jahr, Monate und Tage hinzukriegen?


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:57 Uhr.