HandyTools Hub

倒计时器

为任何事件进行实时倒计时

预设事件

自定义事件

--

00

天

00

时

00

分

00

秒

有些日子重要到值得盯着它一步步逼近:产品上线、婚礼、考试,或跨年夜。这个倒计时器显示距离你选定时刻还剩多少天、小时、分钟和秒,并每秒实时更新。它内置新年、圣诞节和情人节预设,外加一个可自定义模式。由于它把目标读作一个绝对时间点,而不是递减计数器,因此跨越长时间、系统休眠和标签页节流都能保持准确。

设置倒计时

  • 按一个预设按钮,就开始倒数到新年、圣诞节或情人节。预设名称会成为显示区上方的标题。
  • 或者输入事件标题(最多 50 个字符,留空则用 “Custom Event”),选择本地日期和时间,按「Set Countdown」。
  • 四个大字段分别显示天、小时、分钟和秒,每秒刷新一次,无需刷新页面。
  • 标题显示在数字上方,这样同时开多个标签页时也能分辨当前是哪个截止日。设置新事件会替换上一个并重启计时。

读懂显示

每个字段都补零到两位,所以六小时的倒计时显示为 00 / 06 / 00 / 00,而不是 6。这些字段是彼此独立的余数,而不是整体的分数:90,061 秒是一天、一小时、一分钟加一秒,而不是「1.04 天」。天数栏在长周期下会一直增长,所以两年的倒计时可能在天数框里显示 730。这里没有周或月的字段,从而避免了月份长度不一带来的歧义。

计时器如何避免漂移

计时器只保存一份状态:作为绝对时间戳的目标时刻。每次 tick 都用该时间戳减去当前时间,再把差值拆成天、小时、分钟和秒。它从不递减计数器。这个设计很关键,因为 setInterval 只是近似——后台标签页会被节流,休眠的笔记本会完全暂停时钟。从目标重新计算意味着每次 tick 都独立正确,一旦恢复运行显示就自我校正。不足一秒的部分向下取整,所以可见数值在整秒边界才变化,而不是在秒中间跳。

预设、UTC 与自定义时间

这是使用预设前值得弄明白的一个行为。节日预设锚定在节日当天的 UTC 零点,而自定义事件使用你在日期字段里输入的本地时间。对 UTC+8 的观看者来说,新年预设在 1 月 1 日当地 08:00 归零,而不是当地午夜;对 UTC−5 的观看者,则在 12 月 31 日 19:00 归零。如果准确的当地午夜很重要,请改以自定义事件输入日期。预设是在页面加载时生成的,所以一旦某个节日已经过去,刷新就会把按钮移动到下一次的日期。

实操示例

假设设置一个恰好在一 天、一小时、一分钟加一秒之后的自定义事件。那就是 90,061 秒。计时器先算 90,061 ÷ 86,400 = 1 天、余 3,661 秒;再算 3,661 ÷ 3,600 = 1 小时、余 61 秒;最后 61 ÷ 60 = 1 分钟、余 1 秒。显示为 01 / 01 / 01 / 01。再过一秒总量是 90,060,秒字段就显示 00。如果同一个目标比当前时间早一秒,四个字段都会显示 00,并出现已过期提示。

实际用途

  • 工作时把上线、申报截止、考试或出行倒计时放在副屏上。
  • 在直播活动、网络研讨会或课堂上,把倒计时投到共享屏幕上。
  • 追踪促销、报名窗口或会议结束前的剩余时间。
  • 无需自己计算日期差,直接倒数到某个节日。
  • 用自定义标题标注屏幕上是哪个截止日,方便同时开多个标签页时辨认。

归零时会发生什么

当目标时刻到达或已经过去,计时器返回过期结果:每个字段都归零,并显示「Event has passed!」消息。计时循环仍在运行,所以如果零点到来时页面已经打开,切换会在下一次 tick 发生。工具到此为止——它不会向上计数、不会响铃,也不会推送通知,请把它当作一个显示牌而非闹钟。若需要提醒,请保持标签页可见,或另设一个计时器。

倒计时、秒表与时钟

倒计时与本站其他时间工具有所不同。秒表从你启动的那一刻向上计时,衡量的是已经过去的时间;世界时钟显示另一个时区的当前时间;倒计时则指向一个固定的未来时刻并朝它收缩。若你要衡量一项任务花了多久,用秒表;若你要问「还有多久」,用这个计时器。当截止时间以日期和时刻而非时长的形式给出时,这个区别尤其重要,因为只有倒计时能把那个终点变成一个实时的剩余时间显示。

相关工具

常见问题

为什么倒计时存的是一个绝对日期,而不是每秒减一?

因为浏览器定时器并不精确。每次 tick 都用当前时钟减去已存储的目标时刻,所以即使标签页被节流、笔记本休眠,或某次 tick 迟到,显示依然正确。若只是每秒递减一个计数器,时间一长就会漂移。

我自定义的时间好像差了好几个小时,倒计时用的是哪个时区?

自定义事件使用你输入的本地日期和时间。内置节日预设锚定在 UTC 零点,所以在某些时区里,预设会在当地的不同时刻归零。如果需要当地午夜,请把节日作为自定义事件输入。

节日过了之后,预设日期会怎样?

预设会在每次页面加载时根据浏览器时钟重新计算。1 月 1 日过去后,刷新页面会让新年按钮指向下一年的日期;圣诞节和情人节同理。

倒计时最多能显示多少天?

没有实际上限。剩余时间是 JavaScript 的秒数,足以覆盖一年甚至十年的目标。天数栏只是会超过两位数继续增长。

切到后台标签页时,倒计时还会准确运行吗?

会,但可视更新可能变慢,因为浏览器会节流隐藏标签页里的定时器。由于每次 tick 都从绝对目标重新计算,标签页一恢复可见,数字立刻是正确的。

倒计时恰好归零的那一刻会显示什么?

四个字段全部置为 00,并出现「Event has passed!」提示。不会显示负值,倒计时也不会发出声音或弹出通知。

由 HandyTools Hub 团队审校 · 最后更新