Alter in Jahre UND Tage ausgeben lassen!

putzi

Gesperrt
Hallo!

PHP:
<?php

$tag = $row['geb_d'];
$monat = $row['geb_m'];
$jahr = $row['geb_y'];


$day_of_birth = "$tag . $monat . $jahr";

$array = explode(".",$day_of_birth);
$seconds_since_birth = mktime(0,0,0,$array[1],$array[0],$array[2]);
$today = time();

$age = $today - $seconds_since_birth;
$age = date("Y",$age) - 1970;

echo $age;
echo ' Jahre';

?>

Ich habe gerade dieses Script.

Da wird mir aber nur das Alter in Jahren angezeigt.

(z.B. 15 Jahre)

Möchte aber haben, dass auch die tage angezeigt werden.

Also: 15 Jahre und 125 Tage.

Und wenn ist 15 Jahre und 356 Tage ist man 16 Jahre alt.
Dann wird angezeigt 16 Jahre und 0 Tage.
16 Jahre und 5 Tage......



Ich hoffe ihr versteht was ich meine, und könnt mir hoffenltihc bald helfen!

Danke!
 
Naja, ganz glücklich bin ich noch nicht.


Ich brauche nur die Jahre und Tage.

Keine Monate, oder sonst irgentwelche sinnlose Dinge.

Gibt es da kein einfaches Script?

Trotzdem Danke!
 
Nichts ist sinnlos, man kann so ziemlich mit allem etwas anfangen.
Möchtest Du die Berechnung EXAKT haben, sollen z. B. Schaltjahre berüchsichtigt werden?

Theoretisch müßte man ein Array füllen, am besten von 1900 an, mit der Summe der Tage in jedem Jahr bis heute (das geht mit Unix, PHP unter Windows kann nicht mit negativem Timstamp rechnen - also erst ab 1970).

Mit Deinem Ansatz wirst Du, je länger das Geburtsdatum zurückliegt, eine höhere Differenz zwischen errechnetem und tatsächlichem Alter haben!

Mit meinem Vorschlag kann man ohne Probleme die korrekten Tage im Jahr hochrechnen lassen. Sobald der Rest an Tagen weniger ist, als das aktuelle Jahr tatsächlich hat (um genau zu sein, die Summe der Tage vom ersten Tag des Monats bis zum Geburtstag), kann man die Resttage ausgeben lassen.

Es gibt vielleicht noch andere Ansätze, ich neige oft dazu Probleme zu kompliziert anzugehen :-)
Auf jeden Fall ist die Lösung nicht einfach mal so geschrieben, das dauert etwas. Vielleicht hat schon jemand dieses Problem gelöst. Warten wir mal lieber ab wer sich auf Deine Frage noch meldet :-)
Ich werde, sofern ich etwas Freizeit habe mal über einem Beispielcode sitzen. Kann nichts versprechen, habe Jobtechnisch viel zu tun :-(
 
Wieso? Das geht auch ohne ein array exakt.

Man weis ja viel Tage ein Jahr hat. So rechnet man die Jahre mit einem Nachkommawert aus. Stellt so kein Problem dar.

Beispiel 28.421 Jahre

Dann rechnet man den Nachkommawert einfach mit dem Jahr über.

Beispiel 365 * 0.421 = 153.665 Tage.

So nun noch ein floor()

Dann haben wir 28 Jahre und 153 Tage die Stunden insteressieren ihn ja nicht. Ist also ohne Probleme möglich.
 
Zuletzt bearbeitet von einem Moderator:
Die Berechnung ist nicht korrekt, weil Du die Schaltjahre nicht berechnest (Schaltjahre haben 366 Tage!). Du vergißt das unser Kalender nicht glatt zu berechnen ist und vielen Ungenauigkeiten unterworfen ist. Lukasz, das Ergebnis deiner Rechnung dürfte 7 Tage daneben liegen (geschätzt).

Deshalb habe ich gefragt ob es EXAKT sein soll. Rund rechnen ist einfach - aber falsch! Mehr habe ich nicht geschrieben ;-]
 
Man koennte das Jahr mit 365.25 Tagen beschreiben, wenn man die Sonderregeln ausser Acht laesst bei denen ein Schaltjahr ausgelassen wird (oder eben doch nicht).
 
Man weiss doch wie viele Jahre Seit UNIX Zeit vergangen sind, Schaltjahre sind doch alle Jahre, somit weiss man doch auch, wie viele Tage man drauf rechnen muss! Richtig? Ich denke man kann schon sehr präzise mit Dati arbeiten!
 
hubeR83 hat gesagt.:
Schaltjahre sind doch alle Jahre
:confused:
Du meinst alle 4 Jahre? Eben nicht. Auch wenn dies meist zutrifft.
Ein Jahr ist ein Schaltjahr wenn seine Jahreszahl durch 4 teilbar ist. Das Schaltjahr wird aber ausgelassen wenn die Jahreszahl durch 100 teilbar ist. Jedoch ist es dann doch wieder ein Schaltjahr wenn die Jahreszahl durch 400 teilbar ist.
Ganz so einfach ist es also doch nicht. Daher hatte ich in meinem letzten Post davon gesprochen, dass man mit 365.25 Tagen rechnen kann wenn man die "Sonderregeln" ausser Acht laesst.
 
Wenn man den Gregorianischen Kalender berücksichtigt sind es übrigens 365,245 pro Jahr. :p
Zumindest wenn man davon ausgeht, dass 400 Jahre 146.098 Tage haben.
Unter Wikipedia gibts ne Menge Informationen dazu.
Ansonsten müsstest du dir ne Routine schreiben, die dir die Tage seit dem Datum 0 ausrechnet und dann höheren von kleineren subtrahiert.

Gruß TvP
 
Zurück