秒表与倒计时
毫秒精度的秒表(开始/暂停/继续/重置/计次)与倒计时(时:分:秒,到点提示并响铃),全部在本地运行。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
performance.now() · requestAnimationFrame
已用时间00:00.000
计次表
还没有计次,点「计次」记录一段。
这个工具能做什么
- 开线上会议、做饭或运动时需要一个不装 App 就能用的倒计时,输入 00:05:00 点开始即可,到点高亮提示并响一声。
- 测一段操作耗时(比如接口超时、脚本跑多久)时用秒表,毫秒精度足够看出差别,还能暂停后继续。
- 做分段计时:跑步或分步骤操作时按「计次」,每段用时与累计用时分开列出,结束后可以整表复制出去。
- 设置时长的写法很宽松,00:05:00、5:00、300 三种都行,还能用「+1 分钟」快捷按钮微调。
示例
输入
倒计时时长输入 00:05:00,秒表已计次一次(累计 00:01:30)
输出
倒计时显示 00:05:00,走完 1 分 30 秒后剩余 00:03:30;秒表显示 01:30.000,计次表记录分段 01:30.000、累计 00:01:30
秒表不足 1 小时显示 MM:SS.mmm,超过 1 小时才补上小时位;倒计时始终按 HH:MM:SS 显示。计时的推进依赖页面的 requestAnimationFrame,切到后台标签页会被浏览器节流。
常见问题
倒计时的写法有什么要求?
支持 HH:MM:SS、MM:SS 和纯秒数三种。只有第一段可以是任意非负整数,后面两段必须小于 60,所以 1:60 会报错,1:59 正常。所有段都必须是数字,空输入或含字母都会提示时长非法。
关掉标签页或切到后台计时还准吗?
计时用的是 performance.now() 差值,切后台被节流只会让画面刷新变慢,恢复后时间会立刻对上。但标签页被关闭或挂起太久,当前这一轮就无法续算,倒计时额外挂了一个 setTimeout 兜底以保证到点能触发提示。
暂停之后能接着计时吗?
可以。暂停会把已用时间存下来,点「继续」从这一刻接着走;重置则清零并清空秒表计次,倒计时的设定时长也会一起被清掉,需要重新填或点快捷按钮。
「计次」记的是总时间还是分段?
两个都有。每次计次会记录当前累计时间,并算出与上一次计次之间的差值作为分段用时,所以按得越密分段越短;如果系统时钟回拨导致总时间倒退,工具会拒绝这次计次而不是给出负数。
提示音需要什么权限吗?
不需要。铃声是浏览器本地的音频播放(类似 Web Audio 的短提示音),不请求麦克风之类的权限,也不联网;音量取决于系统的媒体音量。
关键词:stopwatchtimercountdownchronometerlap秒表计时器倒计时计次毫秒