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

jQuery实现月日格式倒计时 剩余天数计算异常问题求解

问题说明

现有代码存在两处问题导致结果不符合预期:

  • 天数计算逻辑错误:直接将总时间差换算为总天数,没有扣除已统计为整月的对应时长,因此显示的是全周期总天数,而非扣除整月后的剩余零散天数
  • 选择器笔误:倒计时结束的样式修改逻辑中,$("demo")缺少id选择器前缀#,无法命中目标DOM元素
修正代码

如果沿用你当前每月固定按30天计算的简化规则,只需调整天数计算逻辑,同时修正选择器笔误即可,修正后代码如下:

var end_date= $('#end_date').val()
var start_date= $('#start_date').val()

var countDownDate = end_date * 1000;
var now = start_date * 1000;

// 预定义时间常量,方便维护
const MONTH_MILLISECONDS = 1000 * 60 * 60 * 24 * 30;
const DAY_MILLISECONDS = 1000 * 60 * 60 * 24;

var x = setInterval(function() {
  now += 1000;
  var distance = countDownDate - now;

  var months = Math.floor(distance / MONTH_MILLISECONDS);
  // 扣除整月占用的时长后,再计算剩余天数
  var remainAfterMonths = distance - months * MONTH_MILLISECONDS;
  var days = Math.floor(remainAfterMonths / DAY_MILLISECONDS);

  $("#demo").html(`${months} M ${days} D`);
    
  if (distance < 0) {
    clearInterval(x);
    // 修正选择器,添加#前缀
    $("#demo").css("background-color", "red");
  }
}, 1000);

提示:固定按30天换算月份是简化实现,和自然月实际天数存在误差。如果需要精确匹配自然月的剩余时长,需要通过Date对象逐月累加计算,不能直接使用固定毫秒值换算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:30:42