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

JavaScript计算两个时间戳差值输出始终为0的问题求助

JavaScript时间戳差值计算异常问题修复

错误原因

  1. 模板字符串变量引用错误
    你在构造sent输出字符串时,分钟、秒的占位符全部错误引用了time.hours属性,没有使用计算得到的time.minutes和time.seconds值。你设定的延迟执行时间是30秒,小时差值本身为0,因此三个位置的输出全部为0。
  2. 提示信息与实际延迟不匹配(次要问题)
    控制台打印的提示为等待1分钟,但setTimeout设置的延迟是30000毫秒,实际仅等待30秒,可按需调整。

修复代码

let messages = [
  {username: "test one",message: "testing one",time: new Date()}, 
  {username: "test two",message: "testing two",time: new Date()}
];
const duration = (difference) => {
  let secondsInMiliseconds = 1000,
  minutesInMiliseconds = 60 * secondsInMiliseconds,
  hoursInMiliseconds = 60 * minutesInMiliseconds;

  let differenceInHours = difference / hoursInMiliseconds,
  differenceInMinutes = differenceInHours % 1 * 60,
  differenceInSeconds = differenceInMinutes % 1 * 60;

  return {
    "hours": Math.floor(differenceInHours),
    "minutes": Math.floor(differenceInMinutes),
    "seconds": Math.floor(differenceInSeconds)
  }
};
console.log("等待30秒后执行打印/循环");
setTimeout(() => {
  for (let i = 0; i < messages.length; i++) {
    let now = new Date();
    let time = duration(now - messages[i].time);
    // 修正变量引用错误
    let sent = `Hours - ${time.hours} - Minutes ${time.minutes} - Seconds - ${time.seconds}`;
    console.log("sent:", sent);
  }
}, 30000);

验证说明

修复后延迟30秒执行时,输出结果为sent: "Hours - 0 - Minutes 0 - Seconds - 30",符合预期计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:04