ToolAct工具行动

在线秒表

免费在线秒表,支持毫秒级精度和分段计时

00:00:00.000

什么是在线秒表?

在线秒表是一种从零开始向上计时的精密计时工具,通常支持毫秒级精度。与倒计时器不同,秒表回答的是「这件事花了多长时间?」,非常适合运动训练、实验记录、演讲排练、烹饪计时、集中编程等需要追踪耗时的场景。本工具完全在浏览器中运行,使用 requestAnimationFrame 实现流畅显示更新,使用 performance.now() 进行单调时间测量,即使系统时间被调整也能保持精确。计次功能可以记录分段成绩并高亮最快/最慢圈,所有数据仅保存在本地,不会上传。

使用方法

快速上手

  1. 点击「开始」启动计时,显示格式为 时:分:秒.毫秒
  2. 计时过程中点击「计次」记录分段成绩,秒表不会停止
  3. 点击「暂停」冻结显示,再点「开始」继续计时
  4. 点击「重置」清除计时器和所有计次记录

使用技巧

  • 秒表使用 requestAnimationFrame 实现约 16ms 的显示更新频率,使用 performance.now() 保证精确计时。
  • 保持标签页可见可获得最流畅的显示。后台标签页可能会限制动画帧更新。
  • 计次成绩用颜色区分:绿色为最快圈,红色为最慢圈。

使用场景

运动健身训练为跑步分圈、游泳间歇、骑行分段或健身房循环训练计时。记录每圈数据,查看最快和最慢圈,帮助控制节奏和追踪进步。
实验记录与数据采集测量反应时间、计时化学反应过程或记录观察间隔。毫秒级显示为科学计时提供足够精度,无需专用硬件。
演讲与公开发言为演讲、汇报或路演排练计时。使用计次功能分别记录各章节或每页幻灯片的时长,回顾哪些部分耗时最长并调整节奏。
烹饪与烘焙追踪每个步骤的实际耗时——从备菜到装盘。计次功能让你在总计时运行的同时,分别测量各阶段(切菜、翻炒、静置)的用时。
集中编程与效率管理为编码会话、调试过程或番茄工作法计时。秒表会一直运行直到你手动停止,让你获得任务实际耗时的真实数据。

技术原理

秒表引擎完全避免了容易漂移的 setInterval 模式。它使用 requestAnimationFrame(rAF)驱动显示更新,以 performance.now() 作为权威时间源。用户点击「开始」时,引擎记录当前 performance.now() 时间戳作为 startTime。在每一帧动画中,计算 elapsed = accumulated + (performance.now() - startTime),其中 accumulated 保存了最近一次暂停前的累计时间。这种双变量模型(累计时间 + 运行时增量)能够正确处理暂停/恢复循环,不会丢失亚毫秒级精度。 选择 performance.now() 而非 Date.now() 是因为它是单调递增的——不会因 NTP 校正、手动调整时钟或夏令时切换而跳变。它还能提供亚毫秒级分辨率(现代浏览器中通常为 5 微秒粒度),使其成为短时间、高精度计时的正确选择。rAF 回调被限制在显示器刷新率(通常 60 Hz ≈ 16.67 ms,高刷新率屏幕可达 120 Hz),因此视觉更新流畅但并非时间基准——实际经过时间来自 performance.now() 计算,始终保持正确。 计次功能在点击「计次」按钮时捕获当前 elapsedMs,通过与前一圈的总时间相减计算分段差值。最快和最慢圈通过 Math.min/Math.max 比较所有圈差值得出,分别用绿色和红色高亮显示。所有状态保存在 React 的 useState 钩子中,位于客户端组件内,不进行持久化或传输——秒表本身是临时的,关闭页面或点击「重置」按钮后完全清除。

  • performance.now() 提供单调递增的亚毫秒级时间戳,不受系统时钟变化影响。
  • requestAnimationFrame 以显示器刷新率(60–120 Hz)驱动显示更新,呈现流畅。
  • 累计时间 + 运行时增量模型处理暂停/恢复,不损失精度。
  • 计次差值通过 currentTotal - previousTotal 计算,实现精确分段计时。
  • 所有计算在浏览器本地完成,无服务器通信或数据上传。

示例

田径跑道 —— 400 米分圈

第 1 圈 -> 01:12.450  (+01:12.450)
第 2 圈 -> 02:26.180  (+01:13.730)
第 3 圈 -> 03:38.910  (+01:12.730)
第 4 圈 -> 04:50.320  (+01:11.410  最快)

演讲排练 —— 逐页计时

开场     -> 00:45.200  (+00:45.200)
问题     -> 02:10.850  (+01:25.650)
方案     -> 04:35.120  (+02:24.270)
演示     -> 07:10.430  (+02:35.310)
总结     -> 08:25.610  (+01:15.180)
总计:8 分 25 秒 —— 未超过 10 分钟目标

HIIT 训练 —— 间歇追踪

第 1 组  -> 00:30.150  (+00:30.150)
休息 1  -> 00:45.320  (+00:15.170)
第 2 组  -> 01:15.480  (+00:30.160)
休息 2  -> 01:30.510  (+00:15.030)
第 3 组  -> 02:00.670  (+00:30.160  最慢)
第 4 组  -> 02:30.520  (+00:29.850  最快)

常见问题

秒表的精度有多高?

秒表使用 performance.now(),提供亚毫秒级精度(现代浏览器中通常为 5 微秒粒度)。显示通过 requestAnimationFrame 以约每秒 60 帧刷新,视觉更新与真实值偏差在 16 ms 以内。对于大多数实用场景——运动、烹饪、演讲——这完全足够。

切换标签页后秒表还会继续计时吗?

会的。经过时间是基于绝对的 performance.now() 时间戳计算的,而非累计计数。切换回标签页时,显示会立刻呈现正确的经过时间。但 requestAnimationFrame 在后台标签页中会被限制,因此视觉更新可能暂停,直到你返回标签页。

电脑进入睡眠会怎样?

performance.now() 是单调递增的,但在系统挂起期间不会推进。电脑唤醒后,秒表显示的时间将不包含睡眠期间的时长——对于大多数计时场景,这是正确的行为。

可以导出或保存计次记录吗?

秒表目前不支持保存或导出计次数据。所有计次记录保存在内存中,重置计时器或关闭页面后会被清除。如需持久记录,请考虑手动复制显示的时间,或使用专用的运动追踪设备。

为什么使用 performance.now() 而不是 Date.now()?

performance.now() 是单调递增的——永远不会倒退。Date.now() 在系统时钟被调整时(NTP 同步、手动修改、夏令时切换)可能会跳跃数秒甚至数分钟。对于短时间计时,performance.now() 是正确的选择。它还能提供亚毫秒级分辨率,而 Date.now() 只有毫秒级。

有任何数据会被上传到服务器吗?

不会。秒表完全在浏览器中运行。计时数据、计次记录或使用信息不会发送到任何服务器。页面加载后即可离线使用。

秒表和倒计时器有什么区别?

秒表从零开始向上计时,回答「花了多长时间?」。倒计时器从设定时长开始递减到零,回答「还剩多长时间?」。本工具是秒表;如需倒计时功能,请使用倒计时器工具。