You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现面向所有用户连续运行的10分钟倒计时器 不每次从9:59:59启动

实现全局统一10分钟连续倒计时的方案

要实现所有用户看到同一个连续运行的10分钟倒计时,不会每次加载页面就重置为9:59:59,核心逻辑是基于全球统一的Unix时间戳计算倒计时进度,不单独为每个用户的每次访问生成新的倒计时起点。

你现有代码的问题在于,NextWebinar的取值完全基于用户本地当前时间推算,每个用户打开页面时都会重新计算10分钟的倒计时时长,自然无法做到全局同步,每次加载也都会重置进度。

修复后的实现代码

/* 返回星期对应文本 */
function DayNameFromDOW(dDate) {
  var weekday = new Array(7);
  weekday[0] = "周日";
  weekday[1] = "周一";
  weekday[2] = "周二";
  weekday[3] = "周三";
  weekday[4] = "周四";
  weekday[5] = "周五";
  weekday[6] = "周六";
  return weekday[dDate.getDay()];
}

document.addEventListener("DOMContentLoaded", () => {
  const TOTAL_COUNTDOWN_SEC = 10 * 60; // 倒计时总时长:10分钟换算为秒
  const nowUnixSec = Math.floor(Date.now() / 1000); // 取当前秒级Unix时间戳,全球统一
  // 计算当前10分钟周期内已经过去的秒数
  const passedSec = nowUnixSec % TOTAL_COUNTDOWN_SEC;
  // 得到全局统一的剩余倒计时秒数
  const remainingSec = TOTAL_COUNTDOWN_SEC - passedSec;
  // FlipDown要求传入倒计时结束的秒级时间戳
  const endTimestamp = nowUnixSec + remainingSec;

  // 页面元素赋值逻辑可根据你的需求保留调整
  const CurDate = new Date();
  document.getElementById("CurDate").innerHTML = CurDate;
  document.getElementById("CurDategetTime").innerHTML = CurDate.getTime();
  document.getElementById("nSecsUntilNextWebinar").innerHTML = remainingSec;

  // 启动倒计时
  const flipdown = new FlipDown(endTimestamp)
    .start()
    .ifEnded(() => {
      // 倒计时结束后自动进入下一轮10分钟周期的回调逻辑可写在这里
    });
});

方案说明

  • 不需要后端存储支持,纯前端就能实现所有用户的倒计时完全同步,因为Unix时间戳是全球统一的基准时间
  • 不管用户什么时候打开页面,都会自动对齐当前全局的倒计时进度,不会每次加载都从10分钟开始重新倒计时
  • 倒计时走完后会自动进入下一个10分钟周期,全程连续运行无需额外操作

内容的提问来源于stack exchange,提问作者Md Nurullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:24:02