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

计算两个时分格式时间的毫秒差值 跨天场景计算异常咨询

问题排查

你提供的原有代码存在两处核心问题:

  • 语法错误:代码中使用的m、tm均为未声明变量,且分钟差值计算不需要额外分支判断,直接计算(m2 - m1) * 60000后累加即可,正负值会自动修正计算结果。
  • 逻辑缺失:未处理第二个时间早于第一个时间的跨天场景,当目标时间为次日时,直接做差得到的是负数,没有自动补充24小时对应的毫秒数,因此跨天计算结果不符合预期。

修正后的代码实现

public static long millisBetweenTimes(int h1, int m1, int h2, int m2) {
    // 分别计算两个时间从当天0点开始的总毫秒数
    long time1Millis = (h1 * 60L + m1) * 60000;
    long time2Millis = (h2 * 60L + m2) * 60000;
    long diff = time2Millis - time1Millis;
    // 差值为负说明第二个时间是次日,补充1天的毫秒数
    return diff < 0 ? diff + 24 * 60 * 60000 : diff;
}

逻辑说明

  • 先把两个时间统一转换为当天0点到对应时间的总毫秒数,避免小时和分钟分开计算的逻辑冗余
  • 差值为负时默认第二个时间为次日,补充1天的毫秒数即可覆盖你提到的周日到周一的跨天场景
  • 如果需要支持跨多天的计算,需要额外传入两个时间对应的日期偏移量参数,仅靠小时、分钟两个参数最多只能支持跨1天的场景

内容的提问来源于stack exchange,提问作者איתן רבינוביץ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:24:05