JavaScript计算两个时间戳差值输出始终为0的问题求助
JavaScript时间戳差值计算异常问题修复
错误原因
- 模板字符串变量引用错误
你在构造sent输出字符串时,分钟、秒的占位符全部错误引用了time.hours属性,没有使用计算得到的time.minutes和time.seconds值。你设定的延迟执行时间是30秒,小时差值本身为0,因此三个位置的输出全部为0。 - 提示信息与实际延迟不匹配(次要问题)
控制台打印的提示为等待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
相关产品推荐
相关产品推荐

