piapia123
zh

倒计时

生成器

所有处理都在浏览器本地完成,数据不上传服务器

倒计时
00:00

⚠️ `1:30` 是 **1 分 30 秒**(冒号从右往左是分、秒)。要 1 小时 30 分请写 `1h30m` 或 `90m`。

键盘:空格 开始 / 暂停,R 重置

一个能当倒计时、也能当正计时用的计时器:填时长(`25m`、`90s`、`1:30`)点开始就是倒计时,留空点开始就是正计时。常见时长做成了一排预设,其中 25 分钟是番茄钟。 ⚠️ 一处约定要写在前面:`1:30` 是 1 分 30 秒,冒号从右往左是分与秒 —— 想要 1 小时 30 分请写 `1h30m` 或 `90m`。这两种写法的歧义是这类输入框最常见的坑,所以这里不猜,直接定死并写在输入框下面。 走时用的是单调时钟(`performance.now()`)而不是墙上时间:系统对时、切换时区、用户手动改时间都不会让倒计时凭空跳一段。提示音是浏览器现场合成的(不加载音频文件),所以这个页面一个网络请求都没有。

功能

  • 倒计时与正计时(时长留空即正计时)
  • 九档预设:1 / 3 / 5 / 10 / 15 / 25(番茄钟)/ 30 / 45 分钟与 1 小时
  • 读数在最后十秒切到带一位小数的形式,判断「还有几秒」不用盯整数位
  • 到点发声(振荡器合成,不加载音频文件),并在读数下方标出已超时多少秒
  • 暂停后继续不会丢时间,也不会跳 —— 已走时长与当前起点分开记
  • ⚠️ 走时用单调时钟,系统对时不会让倒计时变长或变短
  • 键盘:空格开始 / 暂停,R 重置
  • 可以输入小数与带单位的形式:`1h30m`、`90s`、`2.5m`
  • 全部在浏览器本地完成,不联网

使用方法

  1. 点一个预设,或自己填时长(`25m`、`90s`、`1:30`)
  2. 点「开始」,或直接按空格
  3. 需要中断就按空格暂停,再按一次继续;R 重置
  4. 到点会响三声,读数下方显示超时了多少秒(计时不会自动停)

常见问题

`1:30` 到底是 1 分 30 秒还是 1 小时 30 分?
这个工具里是 1 分 30 秒。冒号形式按「从右往左是秒、分、时」读,所以 `1:30` 是一分三十秒、`0:05:00` 是 5 分钟、`1:30:00` 是一个半小时。之所以要定死而不是猜:两种理解都说得通,而猜错的代价是闹钟早响或晚响一小时,且不会有任何提示。要 1 小时 30 分就写 `1h30m` 或 `90m`,那两种写法没有歧义。
为什么到点了计时不自动停?
因为它同时也是一个正计时。到点之后继续走,读数下方会显示「已超时 N 秒」—— 这在很多场合有用:开会时你可能想知道「原定 15 分钟,实际拖了几分钟」,而如果到点就冻住,那个数字就没了。要立刻停下,按空格暂停或按 R 重置。
系统时间变了,倒计时会不准吗?
不会。走时用的是单调时钟(`performance.now()`),它从页面打开起单调递增,不受系统对时、时区切换、手动改时间的影响。用墙上时间(`Date.now()`)实现的话,一次系统对时就能让 25 分钟的倒计时变成 24 分或 26 分 —— 而且这种偏差只在特定机器上偶发,很难复现。
页面关掉之后还在计时吗?
不在。这是一个纯前端页面,没有后台也没有通知推送,关掉标签页计时就结束了。也正因为如此,它适合「我就坐在这儿盯着」的场景(做饭、休息、专注一段),不适合「明天早上叫我」。需要后者请用系统自带的闹钟。

相关工具