You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java如何将Double类型数值转换为HH:mm:ss时间格式?

解决Double类型时分秒数值转H:mm:ss格式的问题

你的问题核心是对输入数值的逻辑理解偏差——之前的代码把12803当成了总小时数去计算时间戳,但实际上这个数值是小时、分钟、秒的拼接数字(对应1小时28分03秒),按小时转时间戳自然会得到完全不符合预期的结果。

正确解决思路

先把输入的Double数值转成整数(忽略小数部分),再按从右往左拆分的规则提取时、分、秒:

  • 最后两位数字 = 秒
  • 倒数3-4位数字 = 分钟
  • 剩余的前面数字 = 小时

兼容全Java版本的代码实现

public class TimeConverter {
    public static void main(String[] args) {
        // 输入的Double类型时分秒数值
        Double inputTime = 12803.000000;
        // 忽略小数部分,转换为整数
        int timeInt = inputTime.intValue();
        
        // 拆分秒、分钟、小时
        int seconds = timeInt % 100;
        int remaining = timeInt / 100;
        int minutes = remaining % 100;
        int hours = remaining / 100;
        
        // 格式化为H:mm:ss(小时保留原始位数,分秒补0到两位)
        String formattedTime = String.format("%d:%02d:%02d", hours, minutes, seconds);
        System.out.println("formattedTime>>" + formattedTime); // 输出:1:28:03
    }
}

代码细节说明

  1. 忽略小数部分:用intValue()直接截断Double的小数部分,比先转字符串再解析更简洁高效。
  2. 拆分逻辑:通过取模和整除操作,不管输入整数是4位(如2803→0:28:03)还是5位(如10203→10:20:03),都能精准拆分出时、分、秒。
  3. 格式化输出%02d确保分钟和秒始终是两位数字(不足补0),小时用%d保留原始位数,避免出现多余的前导0(如果需要强制两位小时,可改成%02d)。

Java 8+ 更优雅的写法(基于现代时间API)

如果你的项目使用Java 8及以上版本,推荐用Duration封装时长,代码可读性更强:

import java.time.Duration;

public class ModernTimeConverter {
    public static void main(String[] args) {
        Double inputTime = 12803.000000;
        int timeInt = inputTime.intValue();
        
        int seconds = timeInt % 100;
        int remaining = timeInt / 100;
        int minutes = remaining % 100;
        int hours = remaining / 100;
        
        Duration duration = Duration.ofHours(hours).plusMinutes(minutes).plusSeconds(seconds);
        // 格式化输出
        String formattedTime = String.format("%d:%02d:%02d", 
            duration.toHours(), 
            duration.toMinutesPart(), 
            duration.toSecondsPart());
        System.out.println("formattedTime>>" + formattedTime); // 输出:1:28:03
    }
}

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

火山引擎 最新活动