You need to enable JavaScript to run this app. Android中如何计算hh:mm:ss.SSS格式时间的精确毫秒差值
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何计算hh:mm:ss.SSS格式时间的精确毫秒差值

hh:mm:ss.SSS格式时间的精确毫秒差值计算方法

核心实现逻辑

不需要手动拆分时间字符串做单位换算,只需要把字符串格式的时间解析为带毫秒精度的时间对象,直接取两个对象的毫秒时间戳做差即可,计算过程无精度损失。

容易踩的实现坑

  • 格式占位符选错:原代码使用的hh是12小时制占位符,只要计算的时间涉及12点前后的区间,就会因为上下午识别错误导致差值偏差,精准计算场景必须换成24小时制的HH作为小时占位符
  • 精度丢失:不要手动拆分字符串把时、分、秒、毫秒拼起来算差值,很容易出现单位换算错误,直接用Date对象自带的毫秒时间戳计算,从根源上避免这类问题
  • 多余的类型转换:不需要反复在字符串和时间对象之间来回转换,只要解析环节的格式规则匹配,就能直接拿到带毫秒精度的时间值

完整可运行代码示例

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class TimeDiff {
    public static void main(String[] args) throws Exception {
        String Y1 = "05:41:54.771";
        String Y2 = "05:42:03.465";

        // 格式串替换为24小时制的HH,匹配毫秒精度需求
        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.SSS", Locale.getDefault());
        
        // 解析时间字符串为Date对象
        Date time1 = format.parse(Y1);
        Date time2 = format.parse(Y2);

        // 计算毫秒差值,取绝对值避免时间先后顺序影响结果
        long diffMills = Math.abs(time2.getTime() - time1.getTime());
        System.out.println("两个时间的精确毫秒差值为:" + diffMills);
    }
}

代码运行说明:上述代码会自动匹配给出的格式规则计算差值,最终输出的结果完全保留毫秒级精度,不会出现秒/分换算的精度丢失。

针对原有代码的补全说明

贴出的半截代码缺少两个核心环节:

  • 缺少format.parse(时间字符串)的解析步骤,没有把格式化规则和实际的时间值绑定
  • 缺少差值计算环节,没有取出两个时间对象的毫秒时间戳做减法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 09:45:05