🛝Toolio
Über Kontakt

⏱️ Online-Stoppuhr mit Rundenzeiten

Drücke auf Start, und das Tool addiert nicht tatsächlich kleine Zeiteinheiten in 30-Milliarden-Schritten. Es speichert den genauen performance.now()-Wert im Moment des Starts und berechnet bei jedem Nezeichnen den Unterschied zwischen diesem gespeicherten Wert und dem aktuellen Zeitstempel, um die vergangene Zeit zu ermitteln – neu berechnet, nicht aufsummiert. Diese Unterscheidung ist wichtig, weil Browser im Hintergrund aufgrund von Tabs absichtlich die Ausführung von setInterval verlangsamen, um Batterie zu sparen. Dies ist der klassische Grund, warum selbstgemachte Timer abweichen oder Sekunden verlieren. Da dieser Stoppuhr die Zeit immer aus dem Zeitstempeldifferenz berechnet, anstatt zu zählen, wie viele Intervalle abgelaufen sind, springt der angezeigte Wert sofort auf den korrekten Wert zurück, sobald du zum Tab zurückkehrst, selbst nach Minuten Abwesenheit.

Der Stoppuhr ist ein kostenloser Browser-Lap-Zähler, der die vergangene Zeit durch den Vergleich des monotonen performance.now()-Zählers mit einem gespeicherten Startzeitstempel ermittelt, anstatt die setInterval-Intervalle zu zählen. Daher bleibt die angezeigte Zahl auch dann korrekt, wenn der Browser die Aktualisierungen des Tabs verlangsamt.

00:00.00

Von Grund auf privat. Dieses Tool läuft vollständig in deinem Browser — nichts, was du eingibst, wird hochgeladen oder gespeichert, und es funktioniert offline.

Über

Unter der Oberfläche gibt es drei Zustände: einen akkumulierten `elapsed`-Wert in Millisekunden, einen `startAt`-Snapshot von `performance.now()`, der im Moment, in dem du auf Start drückst, gespeichert wird, und einen booleschen `running`-Flag. Die Funktion, die die Zahl auf dem Bildschirm erzeugt, ist einfach `elapsed` plus, wenn `running` aktiviert ist, der Unterschied zwischen dem aktuellen Zeitpunkt und `startAt`. Ein `setInterval` ruft diese Funktion alle 30 Millisekunden auf, um den Bildschirm neu zu zeichnen – das Intervall selbst trägt keine Zeitinformation, es dient nur als Aktualisierungstrigger. Das ist die richtige Art, einen Stoppuhr zu erstellen, und vermeidet direkt das häufige Problem, bei dem ein Timer bei jedem Intervall einen festen Inkrement hinzufügt und sich langsam verlangsamt, wenn die Intervalle verzögert, übersprungen oder zusammengefasst werden.

Diese Designentscheidung ist auch der Grund, warum der Stoppuhr sich verhält, wenn du zu einem anderen Tab wechselst. Browser verlangsamen Timer in Hintergrund-Tabellen, um CPU und Batterie zu sparen – ein `setInterval`, das alle 30 ms aufgerufen wird, kann während der Tab nicht sichtbar ist, auf einmal pro Sekunde oder langsamer verzögert werden. Bei diesem Stoppuhr beeinflusst das nur, wie oft die Zahl auf dem Bildschirm neu gezeichnet wird; die zugrunde liegende Mathematik (aktueller Zeitstempel minus Startzeitstempel, plus bereits gesammelte Zeit) kümmert sich nicht darum, wie viele Nezeichnungen übersprungen wurden. Wechsle zurück zum Tab, und die nächste Nezeichnung zeigt die exakt korrekte vergangene Zeit an – nichts wird durch das Verlangsamen verloren oder gewonnen, nur die Glätte des Anschauens, wie die Sekunden vorbeigehen, während du etwas anderes anschaust, leidet.

Die Verwendung von `performance.now()` anstelle von `Date.now()` ist auch die richtige Grundlage für diese Aufgabe, nicht ein zufälliges Detail. `Date.now()` spiegelt die Systemuhr deines Systems wider, und Systemuhren können springen – ein Laptop, der nach dem Schlafen von der NTP-Server synchronisiert wird, eine manuelle Uhränderung oder eine Sommerzeit-Änderung können alle dazu führen, dass `Date.now()` während einer Sitzung vorwärts oder sogar rückwärts springt. `performance.now()` ist als monotoner Zähler definiert: er zählt nur nach oben mit konstanter Geschwindigkeit und ist nicht von diesen Korrekturen betroffen, was genau die Garantie ist, die ein Stoppuhr benötigt, und eine einfache Systemuhr nicht hat.

Die ehrliche Einschränkung ist die Persistenz, und es gibt keine. Diese Version speichert `elapsed` und die `laps`-Array als gewöhnliche JavaScript-Variable in der Seiten-Speicher – es gibt keinen Aufruf irgendwo im Quellcode zu localStorage oder zu diesem Sites eigenen `Playground.store()`-Hilfsfunktion, die andere Toolio-Tools verwenden, um eine Neuladung zu überstehen. Das bedeutet, dass das Neuladen der Seite, das Schließen des Tabs oder das Klicken auf ein anderes Tool deine laufende Zeit und jede aufgezeichnete Lap sofort und dauerhaft löscht. Es gibt kein "Letzten Sitzung fortsetzen", nichts synchronisiert über Geräte, und nichts, was gesichert werden kann, weil nichts zuerst jemals in den Speicher geschrieben wird. Wenn eine Lap-Geschichte tatsächlich für dich wichtig ist – ein Workout-Protokoll, eine Reihe von Präsentationszeiten – schreibe die Zahlen auf oder mache einen Screenshot, bevor du dich von der Seite entfernst, denn diese Seite wird sie nicht für dich merken.

Verwendung

  1. Klicke auf "Start" – der Knopf benennt sich sofort in "Pause" um, und die Uhr auf dem Bildschirm beginnt in Echtzeit zu laufen und wird alle 30 Millisekunden neu gezeichnet.
  2. Klicke auf "Lap" zu jedem Zeitpunkt während der Lauf, um die aktuelle vergangene Zeit zu speichern; der neue Eintrag wird an die Spitze der Lap-Liste gesetzt und zeigt sowohl die Split-Zeit (die Zeit seit der letzten Lap) als auch die Gesamtzeit an.
  3. Klicke auf denselben Knopf erneut, der jetzt als "Pause" bezeichnet ist, um den Anzeigefenster zu "frieren" – die vergangene Zeit wird intern gespeichert, nichts geht verloren, und der Knopf kehrt zu "Start" zurück.
  4. Klicke erneut auf "Start", um den Zählprozess von genau dem Punkt fortzusetzen, an dem du aufgehört hast, nicht von Null an.
  5. Klicke auf "Reset", um den Anzeigefenster auf Null zu setzen, alle aufgezeichneten Laps zu löschen und beide Knöpfe auf ihre ursprünglichen Bezeichnungen zurückzusetzen – dies ist auch der einzige Weg, um eine neue Sitzung zu beginnen, da es keine Speicherfunktion gibt, die die alte Sitzung vorher schützt.

Häufige Fragen

Wie misst dieser Stoppuhr tatsächlich die Zeit unter der Oberfläche?
Es liest `performance.now()` einmal, im Moment, in dem du auf Start drückst, und speichert diese Zahl. Danach ist der Wert auf dem Bildschirm einfach "bereits gesammelte Zeit" plus "aktuelle performance.now() minus den gespeicherten Startzeitstempel" – neu berechnet bei jedem 30-Milliarden-Schritt-Nezeichnen. Es fügt nie einfach einen festen +30ms zu einem laufenden Gesamtsumme hinzu, was der Abkürzung ist, die viele selbstgemachte Timer langsam aus dem Takt bringt.
Was passiert mit der Zeit, wenn ich zu einem anderen Browser-Tab wechsle, während es läuft?
Hintergrund-Tabellen werden verlangsamt – der Browser kann einen 30ms `setInterval` auf einmal pro Sekunde oder langsamer verlangsamen, um CPU und Batterie zu sparen, so dass die auf dem Bildschirm angezeigte Zahl während deiner Abwesenheit scheinbar einfriert oder springt. Aber da dieser Stoppuhr immer die vergangene Zeit als Zeitstempeldifferenz berechnet, anstatt zu zählen, wie viele Intervalle abgelaufen sind, zeigt die nächste Nezeichnung, sobald du zum Tab zurückkehrst, die exakt korrekte vergangene Zeit an. Du verlierst oder gewinnst keine Zeit durch das Verlangsamen – nur die visuelle Glätte leidet, während du nicht hinschaust.
Warum `performance.now()` anstelle von `Date.now()` – spielt das tatsächlich eine Rolle?
Ja. `Date.now()` spiegelt die Systemuhr deines Systems wider, die vorwärts oder rückwärts springen kann – zum Beispiel direkt nachdem ein Laptop aus dem Schlafmodus geweckt und mit einem NTP-Server synchronisiert wird, oder wenn die Systemuhr manuell geändert wird. `performance.now()` ist ein monotoner Zähler, der nur mit konstanter Geschwindigkeit nach oben zählt und nicht von diesen Korrekturen beeinflusst wird, was genau die Eigenschaft ist, die ein Stoppuhr benötigt, und diese Version verwendet den richtigen.
Speichert es meine vergangene Zeit oder Lap-Geschichte irgendwo?
Nein – und anders als einige andere Toolio-Tools verwendet es überhaupt nicht das localStorage des Browsers für diese Daten. Alles, was du siehst, existiert nur in der Speicher des Tabs, solange dieser Tab geöffnet bleibt. Wenn du die Seite neu lädst, den Tab schließt oder zu einem anderen Tool navigierst, sind deine vergangene Zeit und jede Lap für immer verschwunden; es gibt keine Rückgängigmachung und keine automatische Speicherung, weil nichts jemals in den Speicher geschrieben wird. Schreibe die Zahlen auf oder mache einen Screenshot, bevor du gehst, wenn du ein Protokoll benötigst.
Gibt es eine Grenze für Laps, und was bedeuten die beiden Zahlen in jeder Lap-Zeile?
Es gibt keine Grenze – die Liste wächst einfach weiter, mit der neuesten Lap an der Spitze. Jede Zeile zeigt zwei Zahlen an: die Split-Zeit, in der Akzentfarbe, die die seit der letzten Lap vergangene Zeit angibt; und die Gesamtzeit, in Grau, die die kumulative Zeit seit dem Drücken von Start angibt. Diese Kombination ermöglicht es dir, eine einzelne Segment zu beurteilen – ein Workout-Intervall, ein Abschnitt einer Rede – ohne den Gesamtlauf zu verlieren.
Lädt dieses Tool meine Daten hoch?
Nein. Alles läuft direkt in deinem Browser, deine Daten verlassen dein Gerät nie — nach dem Laden funktioniert es sogar offline.