时间与效率

在线秒表(带计次)

用按钮或键盘开始、暂停和计次。每一圈都显示本圈用时和累计时间,最快和最慢的一圈会被标出来,整张计次表可以下载成表格。计时是读取系统时钟算出来的,而不是一秒秒累加,所以标签页放在后台、甚至刷新页面,时间都不会出错。

00:00.00

键盘:空格开始或暂停,L 计次,R 清零。

全部在你的浏览器里运行,这里输入的内容不会上传。

怎么用

  1. 点「开始」或按空格键。时间按分、秒、百分之一秒显示,超过一小时后会显示小时。
  2. 每跑完一圈、做完一组或完成一项任务,点「计次」或按 L 键。表格里按从新到旧列出圈数、本圈用时和累计时间;大号时间下方会实时显示当前这一圈的用时。
  3. 点「暂停」或按空格停下,点「继续」从原来的时间接着计。
  4. 点「下载 CSV」把计次结果存成表格,点「清零」或按 R 键清空。只有在暂停状态下才能清零,免得正在计时的时候误按一个键就全没了。

刷新页面,或者关掉标签页再打开,正在运行的秒表仍在运行,暂停的秒表也保留着时间和计次记录。这些状态只存在你自己的浏览器里,点「清零」就会删除。

为什么这个秒表不会走慢

网页秒表最直接的写法,是设一个每 10 毫秒触发一次的定时器,每触发一次就加 10 毫秒。你盯着看的时候没问题,一走开就出错了。为了省电,浏览器会给不在前台的标签页降低定时器频率:MDN 文档说明,非活动标签页里的定时器有最小延迟;Chrome 官方文档写明,隐藏的页面每秒只检查一次定时器,隐藏超过 5 分钟后更是每分钟才检查一次。靠累加的秒表放在这样的标签页里,几乎会丢掉全部流逝的时间。

这个秒表从不累加。按下「开始」时,它记下系统时钟的当前时刻;每次需要显示经过的时间,就用当前时刻减去开始时刻,再加上暂停之前已经累计的时间。画面用 requestAnimationFrame 刷新,浏览器在后台会暂停它;但因为时间不是数出来的,你一切回来,显示的就是正确的时间。

计次也是同样的道理:每按一次「计次」,记下那一刻的累计时间;本圈用时等于这一次累计减去上一次累计。计满两圈以后,会标出最快和最慢的一圈。

显示时,时间截断到百分之一秒而不是四舍五入:59.999 秒显示为 00:59.99,绝不会提前显示成还没到的整分钟。

适合用在哪里

跑步和游泳记圈速、做实验记录每个步骤的耗时、开会控制每个人的发言时间、练习演讲、做家务时估算每项任务用了多久,都很合适。需要倒着数,比如限时答题,请用倒计时;需要「专注 25 分钟、休息 5 分钟」这样循环,请用番茄钟。

算例

分别在 10.00 秒、22.50 秒、30.00 秒各计一次:

圈数本圈用时累计
300:07.50(最快)00:30.00
200:12.50(最慢)00:22.50
100:10.0000:10.00

汇总行显示「共 3 圈 · 最快 00:07.50 · 最慢 00:12.50 · 平均 00:10.00」。下载的 CSV 每圈一行,依次是圈数、本圈用时和累计时间,可以直接用 Excel 或 WPS 打开。

超过一小时会显示小时:1 小时 2 分 3.45 秒显示为 1:02:03.45。如果在第 1.0 秒开始、第 4.0 秒暂停、第 10.0 秒继续,那么到第 12.0 秒时显示 5.00 秒,中间暂停的 6 秒不计入。

局限

  • 屏幕上精确到百分之一秒, 但从你按下按钮到浏览器察觉,通常还有几毫秒的延迟,具体取决于设备。正式比赛这类要求严格的计时,请使用专业计时设备。
  • 跟随系统时钟。 如果计时过程中电脑时间被修改(手动修改或自动对时),经过的时间会跟着跳变同样的幅度。
  • 每个浏览器只有一个秒表。 在两个标签页里同时打开,看到的是同一个保存的秒表,以最后操作的那个为准。

常见问题

切到别的标签页,秒表还在走吗?

在走。它读取时钟而不是累加,所以哪怕在后台放了好几分钟,切回来时间都是准的。

刷新页面会怎样?

正在运行的秒表继续运行,暂停的秒表保留时间和计次记录。点「清零」可以清除。

本圈用时和累计有什么区别?

本圈用时是这一圈单独花的时间;累计是从开始到这一圈结束总共的时间。

能用键盘操作吗?

可以:空格开始或暂停,L 计次,暂停时按 R 清零。

计时数据会上传吗?

不会。秒表在你的浏览器里运行,状态也只保存在你的浏览器里。

参考资料

↵ 打开 · Esc 关闭