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

如何实现日期过期后自动顺延至下一年的倒计时功能

年度固定日期倒计时自动跨年实现

核心逻辑很简单:先计算当年对应目标日期的时间戳,如果该时间早于当前时间,说明今年的目标日已经过期,直接把目标年份+1重新生成日期即可,不需要复杂逻辑。

实现代码

你原来的单行计算逻辑可以替换成下面的写法,支持自动跨年:

// 配置项:要倒计时的固定月、日,需要改目标日期直接改这两个值即可
// 注意:这里沿用你原本用的MM/DD字符串格式,1月就填1,12月填12,不需要做月份减1的偏移
const TARGET_MONTH = 1;
const TARGET_DAY = 1;

// 取当前自然年生成初始目标日期
const currentYear = new Date().getFullYear();
const datePrefix = `${String(TARGET_MONTH).padStart(2, '0')}/${String(TARGET_DAY).padStart(2, '0')}/`;
let targetTime = +new Date(`${datePrefix}${currentYear}`);

// 判断当年目标日期是否已过期,过期则切换为下一年
if (targetTime - Date.now() < 0) {
  targetTime = +new Date(`${datePrefix}${currentYear + 1}`);
}

// 最终得到的正确时间差(毫秒值)
const difference = targetTime - Date.now();

说明

  • 后续如果要做其他年度日期的倒计时,比如圣诞、生日、周年日,只需要修改TARGET_MONTH和TARGET_DAY两个常量即可,核心判断逻辑不用调整
  • 不要硬编码固定year的取值,初始年份始终取当前系统年份,才能保证每年都能自动计算正确的目标日期
  • 拿到的difference是毫秒级时间差,转成剩余天/时/分/秒的时候,按单位换算即可:
    • 剩余天数:Math.floor(difference / (1000 * 60 * 60 * 24))
    • 剩余小时:Math.floor((difference / (1000 * 60 * 60)) % 24)
    • 剩余分钟:Math.floor((difference / (1000 * 60)) % 60)
    • 剩余秒数:Math.floor((difference / 1000) % 60)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:36:23