19 hours ago

Wie alt bist du?



Die Berechnung des Alters ist nicht trivial. Es gibt mehrere Lösungen, die sich voneinander unterscheiden.

Keine Sorge, wir wollen nichts über die Altersstruktur unserer Leser:innen wissen. Es geht vielmehr um die Toten. In meinem Job habe ich es auch mit Beerdigungen zu tun. Bei einem Bestattungsauftrag der Stadt ist immer das Alter der verstorbenen Person angegeben, und zwar im Format Jahre, Monate, Tage. Ausserdem ist das Geburts- und Sterbedatum vermerkt. Die Altersangabe ist für Pfarrpersonen, die die Bestattung durchführen, von Interesse.

In unserer Kasualienverwaltung möchten wir das Alter nicht ungeprüft vom Bestattungsauftrag übernehmen, sondern selbst berechnen. Ich habe mich dieser Aufgabe angenommen und bin zu erstaunlichen Ergebnissen gekommen. Zuerst einmal habe ich das Alter in einer Tabellenkalkulation berechnet:

Die Formeln dafür sehen in LibreOffice Calc und Excel gleich aus:

  • Jahre = DATUMDIF(A2;B2;"Y")
  • Monate = DATUMDIF(A2;B2;"YM")
  • Tage = DATUMDIF(A2;B2;"MD")

Die beiden Tabellenkalkulationen liefern das gleiche Ergebnis, welches mit der Angabe auf dem Bestattungsauftrag übereinstimmt. So weit, so gut. Nun wollte ich das Alter in Python ausrechnen:

from datetime import date from dateutil.relativedelta import relativedelta as delta birth = date(1938, 4, 30) death = date(2025, 3, 24) age = delta(death, birth) print(age.years, 'Jahre', age.months, 'Monate', age.days, 'Tage')

Erklärung: Das Modul datetime wird benötigt, um mit Datenobjekten umgehen zu können. Dateutil.relativedelta wird für die Differenzberechnung von Daten gebraucht. Dann erstelle ich die beiden Datenobjekte für Geburt und Tod. Anschliessend wird das relative Delta in der Variable age bereitgestellt. Die Ausgabe ist selbsterklärend. Das Ergebnis lautet:

86 Jahre 10 Monate 24 Tage

Die Jahre und Monate scheinen kein Problem zu sein, wohl aber die Tage. 22 ist nicht gleich 24.

Dann habe ich drei Webdienste bemüht:

Der https://www.calculator.net/age-calculator.html sagt: 24 Tage
Der https://www.gigacalculator.com/calculators/age-calculator.php sagt: 22 Tage
Der https://www.smart-rechner.de/altersrechner/rechner.php sagt: 23 Tage

Also, was denn nun? 22, 23 oder 24 Tage? Man kann das Alter auch von Hand ausrechnen. Da sich alle bei den Jahren und Monaten einig sind, konzentriere ich mich auf die Tage.

  • 1938 plus 86 Jahre ergibt 2024, und zwar im April
  • April 2024 plus 10 Monate ergibt Februar 2025
  • Von Ende Februar bis zum 24. März sind es 24 Tage

Fazit

Der Bestattungsauftrag, die Tabellenkalkulationen und der Gigacalculator meinen, dass es 22 Tage sind. Mein Python-Skript, die Handrechnung und Calculator.net stimmen für 24 Tage. Als Aussenseiter behauptet der Smart-Rechner, dass es 23 Tage sind. Ja, was denn jetzt?

Das Ganze riecht verdächtig nach dem Plus/Minus-Eins-Problem, mit dem wir es in der Informatik häufig zu tun haben. Dabei geht es darum, ob die Grenzwerte mitgezählt werden oder nicht.

Nun lasse ich euch und mich ratlos zurück. Vielleicht habt ihr eine Idee, wie man das Alter korrekt berechnet.

Titelbild: https://pixabay.com/photos/calendar-pay-number-year-date-2428560/

Quellen: im Text


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.
Gesamten Artikel lesen





© Varient 2025. All rights are reserved