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

如何使用moment库校验倒计时是否在目标时间的10秒范围内

解决思路

核心是计算两个时间的秒级差值,判断绝对值是否不超过10秒。利用moment.js的diff方法可以直接获取时间差,再做简单的数值判断即可。

代码实现

方法一:使用moment的diff方法(推荐)

function isIn10SecondRange(targetTime, checkTime) {
  // 解析时间字符串为moment对象
  const target = moment(targetTime, 'mm:ss');
  const check = moment(checkTime, 'mm:ss');
  
  // 计算秒级时间差,取绝对值
  const secondDiff = Math.abs(target.diff(check, 'seconds'));
  
  // 判断是否在10秒区间内
  return secondDiff <= 10;
}

方法二:转换为总秒数计算

如果不想依赖moment的diff方法,也可以手动计算总秒数后求差:

function isIn10SecondRange(targetTime, checkTime) {
  const parseTimeToSeconds = (timeStr) => {
    const [minutes, seconds] = timeStr.split(':').map(Number);
    return minutes * 60 + seconds;
  };
  
  const targetSeconds = parseTimeToSeconds(targetTime);
  const checkSeconds = parseTimeToSeconds(checkTime);
  
  return Math.abs(targetSeconds - checkSeconds) <= 10;
}
测试示例
// 测试符合条件的情况
console.log(isIn10SecondRange('04:00', '03:57')); // 输出 true
console.log(isIn10SecondRange('04:00', '04:10')); // 输出 true
console.log(isIn10SecondRange('04:00', '03:50')); // 输出 true

// 测试不符合条件的情况
console.log(isIn10SecondRange('04:00', '03:49')); // 输出 false
console.log(isIn10SecondRange('04:00', '04:11')); // 输出 false
说明
  • 两种方法都只关注mm:ss格式的时间差,无需考虑日期部分(moment默认会用当前日期,但两个时间的日期一致,不影响差值计算)
  • 方法一利用moment内置方法更简洁,方法二更轻量化,适合不想完全依赖moment的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:47:39