Zeiteinheiten umrechnen
Rechnet zwischen Millisekunden und Jahren um und zerlegt jede Dauer zusätzlich in Jahre, Tage, Stunden, Minuten und Sekunden.
Wie viele Sekunden hat ein Jahr? Wie lange sind eine Million Minuten? Solche Fragen tauchen ständig auf — beim Programmieren, beim Planen, beim Staunen. Dieses Script rechnet jede Dauer in alle gängigen Einheiten um und zerlegt sie zusätzlich in eine lesbare Form.
Die kleinen Einheiten sind eindeutig: Eine Minute hat 60 Sekunden, eine Stunde 60 Minuten, ein Tag 24 Stunden, eine Woche 7 Tage. Ab dem Monat wird es unscharf, denn Monate haben 28 bis 31 Tage. Das Script rechnet deshalb mit dem Durchschnittsmonat von 30,44 Tagen — das ist ein Jahr geteilt durch zwölf — und mit dem Durchschnittsjahr von 365,25 Tagen, das die Schaltjahre einbezieht. Für Überschlagsrechnungen ist das genau richtig; für konkrete Termine nehmt ihr besser Tage zwischen zwei Daten, das mit dem echten Kalender arbeitet.
Ein paar Zahlen, die man einmal gesehen haben sollte: Ein Tag hat 86.400 Sekunden. Ein Jahr hat rund 31,6 Millionen — die oft zitierte Merkregel „π mal zehn hoch sieben Sekunden" stimmt auf ein halbes Prozent genau. Eine Million Sekunden sind knapp zwölf Tage, eine Milliarde Sekunden dagegen fast 32 Jahre. Dieser Sprung zwischen Million und Milliarde ist der anschaulichste Weg, sich den Unterschied der beiden Größenordnungen klarzumachen.
Verwandtes im Archiv: Alter in Sekunden, Unix-Zeitstempel wandeln und Streckenkonverter für dieselbe Aufgabe bei Längen.
So funktioniert das Script
Der Aufbau ist derselbe wie beim Winkel-Umrechner: eine Zwischeneinheit, auf die alles bezogen wird. Der interessante Teil ist das Zerlegen in eine lesbare Form.
const einheiten = [
{ kuerzel: "ms", name: "Millisekunden", sekunden: 0.001 },
{ kuerzel: "min", name: "Minuten", sekunden: 60 },
…
];
Jede Einheit kennt nur ihren Wert in Sekunden. Umgerechnet wird dann in zwei Schritten: Eingabe mal Faktor ergibt Sekunden, Sekunden geteilt durch Faktor ergibt die Zieleinheit. Eine weitere Einheit — etwa das Jahrzehnt oder die Mikrosekunde — ist genau eine Zeile, ohne dass irgendeine Rechnung angefasst werden müsste.
{ kuerzel: "a", name: "Jahre", sekunden: 31557600 }
Diese Zahl verdient einen Blick: 31.557.600 Sekunden sind 365,25 Tage. Das Viertel berücksichtigt die Schaltjahre, denn im Mittel hat ein Jahr eben nicht 365, sondern 365,25 Tage — genauer 365,2425, wenn man die Ausnahmen der Schaltjahrregel mitzählt. Der Monat ist mit 2.629.800 Sekunden genau ein Zwölftel davon.
stufen.forEach(function (stufe) {
const anzahl = Math.floor(rest / stufe.wert);
if (anzahl > 0) {
teile.push(…);
rest -= anzahl * stufe.wert;
}
});
Das Zerlegen folgt dem Muster, das man vom Herausgeben von Wechselgeld kennt: Immer die größte Einheit nehmen, die noch hineinpasst, abziehen, mit dem Rest weitermachen. Wichtig ist die absteigende Reihenfolge der Stufen — sonst käme statt „1 Tag, 2 Stunden" etwas wie „26 Stunden" heraus.
Die Abfrage anzahl > 0 lässt Einheiten weg, die nicht vorkommen: Aus 3.600 Sekunden wird „1 Stunde" und nicht „0 Jahre, 0 Tage, 1 Stunde, 0 Minuten". Die letzte Abfrage teile.length === 0 fängt den Fall ab, dass alles null ist — dann muss wenigstens „0 Sekunden" dastehen.
if (wert !== 0 && Math.abs(wert) < 0.001) {
return wert.toExponential(3).replace(".", ",");
}
Rechnet man eine Sekunde in Jahre um, kommt 0,0000000317 heraus — und mit vier Nachkommastellen wäre die Anzeige schlicht „0". Deshalb schaltet das Script bei sehr kleinen Werten auf die Exponentialschreibweise um: 3,170e-8. Solche Wechsel der Darstellung sind bei Umrechnern über viele Größenordnungen unvermeidlich.
e.name.padEnd(14, " ") + formatiere(…)
padEnd füllt den Einheitennamen mit Leerzeichen auf eine feste Breite auf, damit die Zahlen untereinanderstehen. Das setzt eine Schrift mit gleich breiten Zeichen voraus — die Ausgabefläche steht deshalb im Stylesheet auf einer Mono-Schrift.
Zum Anpassen: Für Arbeitszeiten rechnet man oft mit dem Arbeitstag zu 8 Stunden und der Arbeitswoche zu 40 Stunden statt mit Kalendertagen — zwei weitere Einträge in der Liste, und der Umrechner wird zum Projektplanungswerkzeug. Für die Zerlegung könnt ihr die Stufenliste um Wochen ergänzen; dann steht dort „2 Wochen, 3 Tage" statt „17 Tage".
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
-
Altersberechnungen
-
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