在线秒表,免费

精准秒表,支持计圈。按空格键开始/停止,按 L 键记录圈速。

00:00.00

键盘快捷键

功能特性

工作原理

  1. 启动秒表:点击「开始」启动秒表 · 以毫秒精度测量流逝时间。
  2. 记录圈速:按「计圈」记录分段,主计时不会中断。
  3. 停止与重置:可随时暂停,再继续或重置。圈速会保留到重置。

秒表简史

机械计时码表(所有现代秒表的祖先)由 Louis Moinet 于 1816 年发明。Moinet 制作他的「Compteur de Tierces」是为了给天空中恒星的视运动做天文学观测计时;它能测到 1/60 秒,在那个时代是极不寻常的精度。第一个商用计时码表在五年后出现:Nicolas Mathieu Rieussec 于 1821 年 9 月 1 日在巴黎战神广场的赛马场上展示了他的「点墨」计时码表,并在 1822 年取得专利。Rieussec 的设计是在计时指针尖端装一个微型墨水罐;起跑时按下按钮,会在起点位置点一滴墨,到时再按一次又点一滴墨,两点之间的距离就给出了用时。Adolphe Nicole 于 1844 年为分秒针(rattrapante)计时码表申请了专利,从此可以同时测量两个分段时间,对于多名选手在数秒之内冲线的比赛,这是关键的创新。Heuer 的 Mikrograph(1916)正好赶在 1920 年的安特卫普奥运会前为机械计时码表带来了 1/100 秒精度,并在该届奥运会上担任官方计时设备。石英革命随着 1969 年 12 月 Seiko 的 Astron(第一款商用石英腕表)一同到来;进入 1980 年代后,Casio 的 G-Shock(1983)和 F-91W(1989)让石英秒表变得便宜、耐用、无处不在。现代原子钟如 NIST-F1(1999)NIST-F2(2014)能达到约三亿年差一秒的精度,远远超过任何腕表所需,但却是所有民用时间所校准的对标基准。

JavaScript 计时,Date.now() vs performance.now() vs requestAnimationFrame

浏览器为时间测量公开了三种不同的 API,各自的保证不同。Date.now() 返回自 1970 年 1 月 1 日起的 Unix 毫秒数,毫秒分辨率,但系统时钟会跳动(手动改时间、NTP 校正、夏令时切换),这让它在测量「经过时间」时不可靠。performance.now() 返回页面启动后的时间,单位是毫秒并带亚毫秒级小数精度;它是单调的(永不倒退,免疫系统时钟变化),正是秒表所需。2018 年初 Spectre/Meltdown 披露之后,浏览器把 performance.now() 的默认精度从亚微秒降到了 100 微秒(有些浏览器最高到 1 毫秒),以缓解定时旁路攻击;跨源隔离(cross-origin-isolated)页面如果通过 Cross-Origin-Opener-Policy 与 Cross-Origin-Embedder-Policy 头部主动选择启用,仍能拿到 5 微秒分辨率。对秒表来说,Spectre 之后的默认精度已经绰绰有余(人在 UI 上感知不到比 50ms 更细的时间差。requestAnimationFrame 严格说不是「时钟」)它是浏览器每次显示刷新都会触发一次的回调(典型是 60Hz 显示器每秒 60 次,120Hz 则 120 次)。对秒表的 UI 而言,requestAnimationFrame 是驱动平滑刷新的那一部分;经过时间本身来自 performance.now()。标准模式:Start 时记录 startTime = performance.now(),然后每个动画帧计算 elapsed = performance.now() - startTime 并重渲染显示。

标签页节流问题

浏览器秒表里有一类著名 bug 的来源是后台标签节流。当一个标签失去焦点(你切到了别的标签或窗口),浏览器会降低 setTimeoutsetIntervalrequestAnimationFrame 回调的触发频率,通常无论请求的间隔是多少,都被夹到「至少 1 秒一次」。Chrome 88(2021 年 1 月)引入了更激进的「intensive throttling」模式:标签后台超过 5 分钟后,把间隔进一步压到 1 分钟一次,以便给笔记本省电。任何「每个间隔加一」的秒表都会因此出错(计数会落后。这里采用的正确实现方式是:每次渲染时把经过时间算作 performance.now() - startTime,而不是每个间隔去给计数器加一)两个时间戳之差永远是准的,与渲染触发的频率无关。后台标签上你会看到显示「冻住」(因为渲染没被触发),但当你回到这个标签时,经过时间会被正确计算出来,显示直接跳到该有的值。要做真正精确的后台计时,标准方案是 Web Worker 模式(把计时放到 worker 线程里,它被节流得比主线程更宽松);本工具的秒表面向前台使用,所以基于 performance.now() 的基本方案就够了。

圈速 vs 分段时间,奥运官方在意的那种区别

日常用语里两个相关但不同的概念常被混淆。圈速(lap time)是单圈的时长(距上一个圈标记以来的经过时间。分段时间(split time)是某个检查点上的累计总和)距比赛一开始至今的经过时间。在 4×400 米接力中,每位运动员个人跑出的那一段就是各自的圈速;而分段时间告诉你队伍累计的位置如何随交棒推进。在马拉松中,5 公里分段告诉你跑者每个检查点上的配速;逐圈之间的间隔则告诉你他的配速一致性。奥运会的计时系统会把两者并排显示。本秒表两者都记录:每条圈条目在一栏显示本圈用时(仅这一圈),在另一栏显示累计总和(自起点的分段时间),你想看「一致性」还是「绝对进度」都可以。Lap 按钮记录一次标记;在一次运行中按多少次都行,得到无限长的间隔列表。

常见用途

诚实的精度边界

在现代硬件上前台运行的浏览器秒表精度约为 10 毫秒,对训练、烹饪、演示、课堂游戏与娱乐性运动来说没问题。它能替代:经过认证的田径计时(使用 photo-finish 摄像与专用电子计时系统,亚毫秒精度并带审计轨迹);GPS 同步的圈速计时(赛车、自行车);无线蓝牙配对的比赛计时系统;或任何把这个时间当成受监管的官方记录的场合。Spectre/Meltdown 之后 Web 平台的计时精度被刻意调低以缓解旁路攻击;对秒表用户来说这是不可见的(人感觉不出差别),但要做微秒级 benchmark 测量则需要跨源隔离头部。对长时间计时(标签可能失焦的场景)预期是后台标签上显示「冻住」,但你回来后会显示正确的经过时间,计算用的是时间戳之差,而不是累加的间隔。

让屏幕常亮,Wake Lock API

移动设备上,浏览器会在用户不操作一段时间后自动降亮、最终熄屏;当你用秒表计时一次训练,屏幕跑到一半灭掉,那并不友好。W3C Screen Wake Lock API 让网页能请求页面使用期间保持屏幕常亮(Chrome 自 84(2020 年 7 月)起支持,Edge、Opera 同步支持,Safari 自 16.4(2023 年 3 月)起支持,Firefox 自 126(2024 年 5 月)起加入。秒表里的典型用法是:计时器启动时获取 wake lock,计时器停止或页面失去可见性时释放)这样既不让长跑中屏幕灭掉,又不会永久覆盖用户的显示设置。移动优先的秒表从 Wake Lock 集成中获益良多;本工具的前台场景很少需要,但自己造秒表时这个选项值得知道。

功能特性

常见问题

计时有多精确?

显示每秒更新 10 次(centisecond 即百分之一秒精度),底层计算用的是 performance.now()(它是单调的,现代浏览器里精度约 100 微秒(在某些 Spectre/Meltdown 缓解后的配置里是 1 毫秒)。对训练、烹饪、演示与娱乐性运动来说足够有余)人在 UI 上感知不到比 50ms 更细的时间差。这不是受监管田径计时、GPS 同步赛车计时、或任何最终会成为官方记录的场合的替代品。

为什么我切到别的标签后显示就冻住了?

浏览器标签节流。标签失焦时,浏览器会降低 requestAnimationFrame 与 timer 回调的触发频率(通常被夹到至少 1 秒一次;Chrome 88+(2021 年 1 月)进一步在 5 分钟不活动后压到 1 分钟一次以省电。回调不被触发,显示就刷不动。好消息是:经过时间本身仍被算对)因为本工具用的是时间戳之差 (performance.now() - startTime),不是累加间隔;当你回到这个标签时,显示会跳到正确的经过时间。真正需要精确后台计时,标准方案是 Web Worker 模式。

圈速是如何工作的?

按 Lap 会记录两个值:本圈用时(距上一次 Lap,或如果是第一圈则距起点的时间)与累计总和(距起点的时间,也叫「分段」)。两者在圈速表里并排显示。在田径里这种区别有意义:本圈用时告诉你每一段的配速一致性,累计总和告诉你相对目标时间的绝对进度。你想按几次 Lap 都行,没有上限。

我能在不丢失经过时间的情况下暂停吗?

可以,按 Stop 会把计时器暂停在当前值;再按 Start 就会从你停下的位置继续。Reset 才会把一切清空(经过时间和所有圈速记录)并回到零。圈速表跨「暂停-继续」周期都会保留,方便你查看与导出多段计时一次会话的所有圈速。

做长时间训练时能让屏幕一直亮着吗?

手机上长时间运动计时时,浏览器的默认行为是降亮、最终熄屏,这在训练途中没什么用。W3C Screen Wake Lock API(Chrome 84+ 2020 年 7 月、Safari 16.4+ 2023 年 3 月、Firefox 126+ 2024 年 5 月)允许网页在使用中请求屏幕保持常亮。本秒表目前没有自动调用 Wake Lock,暂时的变通办法是手工把手机的息屏时间调长,或者长时间运动计时改用设备自带的秒表 App。

我的计时数据会被发送到任何地方吗?

不会。秒表完全在你的浏览器里运行。你的计时数据(开始时间、圈速、当前经过时间值)都不会过网络。运行时打开 DevTools 的 Network 选项卡验证一下,或者页面加载完后切到离线(飞行模式),秒表照样工作。在任何注重保密的计时场合都好用:内部封闭赛道的训练、内部性能 benchmark 等等。

相关工具