Rolf B: Alter einer Person in ganzen Jahren

Beitrag lesen

Hallo Linuchs,

mit PHP kannst Du es auf jeden Fall tun - da dürfte es am einfachsten sein.

Mit create_date() oder new DateTime() zwei DateTime Objekte erzeugen, date_diff drauf ansetzen (wobei es egal ist, in welcher Reihenfolge Du die Datümer an diff übergibst) und aus dem DateInterval-Objekt, das rauskommt, die y Eigenschaft auslesen.

In JavaScript gibt es keine fertige Datumsarithmetik, deswegen verweisen die meisten Quellen bei solchen Fragen auf die Standard-Library moment.js. Aber die Probleme der Lib-Seuche hatten wir ja gerade noch 😉

Hier ist etwas im Bau, was das Problem lindern soll. Aber es ist noch eine sehr unfertige Baustelle, auch wenn es schon einen Polyfill dafür gibt.

Für eine eigene Lösung müsstest Du zwei Date-Objekte erzeugen, und dann mit getFullYear, getMonth und getDay Jahr, Monat und Tag herausholen. Bis dahin ist die Nummer einfach. Sobald Uhrzeiten und Zeitzonen hinzukommen, solltest Du die eigene Arbeit einstellen und Dir moment.js anschauen.

Danach kannst Du die Differenz der Jahre bilden und musst ggf. eins abziehen.

function age(isoBirthDate, isoDeathDate) {

   let birth = new Date(isoBirthDate);
   let death = new Date(isoDeathDate);
   if (death < birth)
      return 0;

   let age = death.getFullYear() - birth.getFullYear();

   let birthMonth = birth.getMonth();
   let deathMonth = death.getMonth();

   if (birthMonth < deathMonth) return age;
   if (birthMonth == deathMonth && birth.getDate() <= death.getDate()) return age;

   return age - 1;
}

Ohne Gewehr, nur mit Pistole zum in den Fuß schießen…

Rolf

--
sumpsi - posui - obstruxi