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

JavaScript解析MySQL timestamp计算剩余时间输出-1天问题求解

问题修复说明

核心错误点

  • 缺少new关键字实例化Date对象:直接调用Date()函数返回的是当前时间的字符串,而非传入时间对应的日期对象,导致传入update函数的时间参数错误。
  • 日期格式不规范:使用06-08-21 16:06:37这类非标准日期格式,不同浏览器的解析逻辑存在差异,容易出现日期解析错误。
  • 超时判断逻辑错误:仅在计算完所有时间单位后判断seconds < 0,此时若目标时间早于当前时间,days已经被计算为负数,无法被修正。

修复后代码

function update(datetime = "2021-07-15 20:24:42") {
    const timeleft = new Date(datetime);
    const now = new Date();
    let secs = (timeleft - now) / 1000;
    // 先判断是否已经超时,直接返回全零
    if (secs <= 0) {
        return '0 days, 0 hours, 0 minutes, 0 seconds';
    }
    const days = Math.floor(secs / (3600 * 24));
    secs -= days * 3600 * 24;
    const hours = Math.floor(secs / 3600);
    secs -= hours * 3600;
    const minutes = Math.floor(secs / 60);
    const seconds = Math.floor(secs % 60);
    return  days+' days, '+ hours+' hours, '+minutes+' minutes, '+seconds+' seconds';
}
// 时间用标准YYYY-MM-DD格式,加new关键字实例化Date对象
const member = new Date("2021-06-08 16:06:37");
alert("Left: "+update(member));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:12:03