Altersberechnungen
Berechnet aus Geburtsdatum und aktuellem Datum euer Alter — in Jahren, Tagen, Stunden und Minuten.
Dieses JavaScript rechnet aus, wie alt ihr seid — und zwar nicht nur in Jahren, sondern auch in Tagen, Stunden und Minuten. Aus Geburtsdatum samt Uhrzeit und dem aktuellen Datum ermittelt es die verstrichene Zeit und rechnet sie in die verschiedenen Einheiten um. Da kommen erstaunliche Zahlen zusammen: Ein 30-Jähriger hat schon über 15 Millionen Minuten hinter sich.
Tragt oben euer Geburtsdatum und, wenn ihr sie kennt, die Geburtsuhrzeit ein. Die Felder für das heutige Datum füllt das Script beim Laden automatisch mit dem aktuellen Zeitpunkt aus — ihr könnt dort aber auch jedes andere Datum eintragen, etwa um auszurechnen, wie alt ihr an einem bestimmten Stichtag wart oder sein werdet. Ein Klick auf „Berechnen" zeigt das Ergebnis in allen vier Einheiten.
Die Umrechnung in Jahre ist dabei bewusst einfach gehalten: Ein Jahr wird pauschal mit 365 Tagen angesetzt, Schaltjahre bleiben außen vor. Rund um den Geburtstag kann die Jahresangabe deshalb um eins daneben liegen — die Tage, Stunden und Minuten stimmen dagegen exakt.
Wer es weniger ernst mag: Im Archiv gibt es auch ein Script, das euer Alter in Hundejahre umrechnet, und eines, das die voraussichtliche Körpergröße von Kindern schätzt.
Jahre werden vereinfacht mit 365 Tagen gerechnet; Schaltjahre bleiben unberücksichtigt.
So funktioniert das Script
Das Script hat drei Aufgaben: Beim Laden füllt es die Felder fürs heutige Datum mit dem aktuellen Zeitpunkt, beim Klick auf den Knopf liest es beide Zeitpunkte ein und bildet die Differenz, und zum Schluss rechnet es diese Differenz in Jahre, Tage, Stunden und Minuten um. Der Schlüssel zu allem ist das eingebaute Date-Objekt von JavaScript.
const jetzt = new Date();
document.getElementById("ab-heute-datum").value =
jetzt.getFullYear() + "-" + zweistellig(jetzt.getMonth() + 1) + "-" + zweistellig(jetzt.getDate());
new Date() ohne Angaben liefert den aktuellen Zeitpunkt. Daraus baut das Script den Text im Format JJJJ-MM-TT zusammen, den ein <input type="date"> als Wert erwartet. Zwei Stolperfallen stecken hier drin: getMonth() zählt die Monate von 0 bis 11, deshalb das + 1 — und einstellige Werte brauchen eine führende Null, die die kleine Hilfsfunktion zweistellig() mit padStart(2, "0") ergänzt.
const d = datumWert.split("-"); // "1990-06-15" -> Jahr, Monat, Tag
const z = (document.getElementById(zeitId).value || "00:00").split(":");
return new Date(Number(d[0]), Number(d[1]) - 1, Number(d[2]), Number(z[0]), Number(z[1]));
Die Funktion alsDatum() macht aus einem Datums- und einem Uhrzeitfeld ein Date-Objekt. split("-") zerlegt den Feldwert an den Bindestrichen in Jahr, Monat und Tag; beim Monat wird wieder 1 abgezogen, weil Date intern bei 0 zu zählen beginnt. Der Ausdruck || "00:00" ist ein Rückfallwert: Bleibt das Uhrzeitfeld leer, wird einfach Mitternacht angenommen.
const diff = heute.getTime() - geburt.getTime();
Hier passiert die eigentliche Altersberechnung — und sie ist verblüffend kurz. getTime() liefert für jedes Datum die Zahl der Millisekunden seit dem 1. Januar 1970 (dem sogenannten Unix-Nullpunkt). Zieht man beide Werte voneinander ab, erhält man die verstrichene Lebenszeit in Millisekunden. Ist das Ergebnis negativ, liegt die „Geburt" in der Zukunft — dann gibt es statt einer Rechnung einen freundlichen Hinweis.
const jahre = Math.floor(diff / (1000 * 60 * 60 * 24 * 365));
const tage = Math.floor(diff / (1000 * 60 * 60 * 24));
const stunden = Math.round(diff / (1000 * 60 * 60));
const minuten = Math.round(diff / (1000 * 60));
Aus den Millisekunden werden die Einheiten durch simples Teilen: 1000 Millisekunden sind eine Sekunde, mal 60 eine Minute, mal 60 eine Stunde, mal 24 ein Tag, mal 365 ein (vereinfachtes) Jahr. Math.floor() rundet bei Jahren und Tagen ab — angebrochene Einheiten zählen dort nicht mit —, während Stunden und Minuten mit Math.round() kaufmännisch gerundet werden. Die ausgeschriebenen Produkte wie 1000 * 60 * 60 * 24 sind Absicht: So sieht man sofort, welche Einheit gemeint ist.
"oder " + tage.toLocaleString("de-DE") + " Tage<br>"
Bei der Ausgabe sorgt toLocaleString("de-DE") für deutsche Tausenderpunkte — aus 15768000 Minuten wird das viel lesbarere 15.768.000. Das Ergebnis wird per innerHTML in die Ergebnisfläche geschrieben, damit Zeilenumbrüche (<br>) und die Hervorhebung der Jahre mit <strong> funktionieren.
Zum Anpassen: Weitere Einheiten sind schnell ergänzt — Sekunden wären Math.round(diff / 1000), Wochen Math.floor(diff / (1000 * 60 * 60 * 24 * 7)). Einfach eine Zeile nach dem Muster hinzufügen und in der Ausgabe anhängen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser