如何设置倒计时

· 9 分钟阅读

无论是产品发布、婚礼、截止日期还是除夕,倒计时把一个抽象的未来日期变成可触摸的东西,天、小时、分、秒一点点往零走。盯着数字缩小,有一种真实的心理拉力:它让注意力收拢,堆叠期待,并为所有看着同一个目标的人创造一个共享的时刻。

倒计时简史

倒计时本身,10-9-8 直到零,由 Fritz Lang 在 1929 年为默片「Die Frau im Mond」(月里嫦娥)发明。他最初拍的发射场景显得平淡,于是加上降序计数来抬升张力。他的科学顾问,包括 Hermann Oberth,把这个点子带回了德国宇航协会;这做法在 NASA 第一次卫星发射(Explorer 1, 1958 年 1 月)成为标准,从此与火箭发射密不可分。1969 年 7 月阿波罗 11 号的倒计时被估计有 6.5 亿人现场观看,是当时单一事件最大的观众数。

倒计时比数字屏幕早了几个世纪。装沙的沙漏,可追溯到大约 8 世纪的欧洲,在船只值班和教会礼拜中起同样的作用。机械厨房计时器在第二次世界大战之后变得普遍,那种带发条的红色圆形小盒依然是「还剩 N 分钟」最经典的形象。1907 年开始的纽约时代广场跨年水晶球下落,本质上就是一个公开的、机械的倒计时。

软件倒计时随上世纪 70 年代和 80 年代的家用电脑出现,通常是游戏计时器的一部分。基于 Web 的倒计时随着 JavaScript 的 setInterval(1996 年 3 月在 Netscape Navigator 2.0 中引入)变得切实可行;2000 年代初期粉丝站点上整类「距离电影上映还有多少天」页面,都是基于这套 API 的寥寥几行代码搭建的。

如何设置倒计时

  1. 设定目标日期与时间。选择事件、截止日或里程碑的日期和时间。时间一定要写清楚,只有日期的倒计时默认是当地时区的午夜。
  2. 加一个标签。给倒计时起个名字,比如「产品发布」或「假期」,这样你一眼就能想起在等什么。标签会出现在页面标题和分享链接预览里。
  3. 如果时区重要,先选好。对于另一个时区有固定本地时间的事件(太平洋时间上午 9 点的会议,UTC 14:30 的发射),把目标按那个时区显式输入,这样全球的受众看到的都是正确的时刻。
  4. 生成分享链接。工具把目标日期、标签和时区编码进 URL 本身,所以收到链接的人看到的是同一个倒计时。
  5. 看着它走。计时器每秒更新,显示剩余的天、小时、分钟和秒。归零时,页面切换到「已发生」状态,如果你愿意它还会继续向上数。

可以倒数的目标

分享倒计时

点击分享链接按钮即可得到一条 URL,其中编码了你的目标日期、时间、标签和时区。任何人打开这条链接,在自己的浏览器里看到的就是同一个倒计时。没有账号、没有数据库,也没有什么需要托管:整个状态都活在 URL 的查询字符串里。这一点很方便:

因为 URL 就是真相之源,你可以加书签、跨设备分享,或者粘到项目跟踪器里,而不必担心状态会过期。

倒计时如何保持准确

每秒把一个数字减一的天真倒计时很脆弱。如果标签页失去焦点、笔记本休眠或者设备进入睡眠,计数器就会落在真实时间后面,显示出错几分钟甚至几个小时的值。修正办法是从墙钟时间计算剩余,而不是从已流逝的滴答数计算。

我们的计时器走的是这条路:每一帧动画(或后台标签页每一秒),都调用一次 Date.now(),从目标时间戳里减去它,然后渲染差值。间隔只是重绘的节奏装置,不是真相之源。关闭标签页、断网、把手机锁屏,都没有影响;重新打开页面,计时器在一个滴答内就回到正确的剩余时长。

这一点之所以重要,是因为现代浏览器对后台标签页的处理。自 2011 年以来,Chrome 和 Firefox 都在激进地节流不活动标签页里的计时器以节省电量;Chrome 88(2021)引入了「重度节流」,后台计时器可能每分钟才跑一次。Page Visibility API(W3C, 2011)告诉页面它何时被隐藏,以便暂停非必要的工作。基于墙钟的倒计时把这些复杂全部忽略:它不在乎自己多久滴答一次,因为每次滴答都渲染正确值。

常见陷阱

替代工具与场景

基于浏览器的倒计时摩擦最低:不用安装,即时分享链接,到处都能跑。其它工具适合其它场景。

工具最适合显著优点需注意
网页倒计时和一群人分享一个时刻基于 URL 的状态,无需账号没有墙钟方案的话,浏览器计时器节流
iOS / Android 内置计时器单个用户,几分钟到几小时硬件闹钟,锁屏可响不可分享,单设备
日历提醒(Google、Apple)长跨度事件跨设备推送不是实时滴答的展示
智能音箱计时器(Alexa、Google)烹饪、健身语音控制,环境音频单一家庭,不便携
蛋形 / 厨房机械计时器烹饪、专注冲刺没有屏幕,没有电池单用户,格式固定
舞台倒计时软件(PresentationPoint、ProPresenter)会议、教堂像素级屏幕控制专业,收费
体育场记分牌体育赛事非常醒目单一场地,收费
直播覆盖层计时器(Streamlabs、OBS)Twitch、YouTube 直播融入直播流仅直播场景

对于一次性公开截止日和活动页,基于 URL 可分享的网页倒计时在速度和零基础设施上胜出。对于个人节奏(烹饪、Pomodoro),手机原生计时器通常更快。

更好用倒计时的建议

隐私与无障碍

倒计时完全运行在你的浏览器里。目标日期、标签、时区,以及任何生成的分享 URL,从不接触服务器。什么都不会被记录,什么都不会被追踪,也不需要账号:倒计时状态住在 URL 本身,这就是它无需后端依然可分享的原因。如果你想让倒计时在零点播放声音或发送系统通知,浏览器会显式向你请求权限,你可以在浏览器站点设置里随时撤销。

对屏幕阅读器用户,倒计时通过一个 aria-live 区域宣读剩余时间,这样每次更新都会读出,不需要你刷新或重新聚焦页面。动画尊重 prefers-reduced-motion。颜色满足 WCAG AA 对比度,版式在小屏上(竖向手机)会重新排布。整个工具一旦页面加载完成就可以离线运行,你可以关掉网络看计时器继续滴答来验证。

常见问题

可以把倒计时分享给别人吗?

可以。复制分享链接并发送给您想分享的任何人。他们会在浏览器中看到指向同一目标日期和时间的相同倒计时。

关闭标签页后倒计时还会继续吗?

倒计时每秒从当前时间重新计算。如果您关闭标签页并稍后重新打开链接,它会从应该显示的位置继续 · 不会丢失任何内容。

倒计时使用哪个时区?

倒计时使用浏览器的本地时区。您输入的目标日期和时间按您当前的时区解读。

可以倒计时到具体时间而不仅是日期吗?

可以。设置目标日期和时间,实现精确到秒的倒计时。

What happens at midnight in my timezone when a friend in another timezone opens the same link?

The link encodes the target as an absolute moment in time (an ISO timestamp), so everyone sees the countdown reach zero at the same global instant. Your friend will see the local time corresponding to that instant in their own timezone.

Why does my countdown look frozen when I switch tabs and come back?

Modern browsers throttle timers in inactive tabs to save battery. Our timer recalculates from the wall clock the moment you return, so the displayed value snaps to the correct remaining time within one tick rather than drifting silently.