Android中如何将时间转为浮点值并获取浮点格式结束时间?
把HH:mm格式时间字符串转换为小时浮点值(Android实现)
针对你的需求——将08:50这类时间字符串转换成类似8.83(或1:30转1.5)的浮点数值,这里提供一个简单直接的实现方案,完全适配Android环境:
核心思路
我们需要把时间拆成小时和分钟两部分,然后将分钟转换为小时的小数部分(分钟数 ÷ 60),最后和小时数相加得到最终的浮点值。举几个例子:
08:30→ 8 + 30/60 = 8.500:20→ 0 + 20/60 ≈ 0.333313:45→13 +45/60=13.75
具体代码实现
你可以写一个工具方法来处理这个转换,直接传入你的date3字符串即可:
public static double convertTimeStringToFloat(String timeStr) { // 按":"分割时间字符串,拆分出小时和分钟 String[] timeParts = timeStr.split(":"); if (timeParts.length != 2) { // 处理格式错误的情况,返回0或抛出异常可按需调整 return 0.0; } try { int hours = Integer.parseInt(timeParts[0]); int minutes = Integer.parseInt(timeParts[1]); // 用60.0确保做浮点除法,避免整数除法丢失精度 return hours + (minutes / 60.0); } catch (NumberFormatException e) { // 捕获数字转换失败的异常 e.printStackTrace(); return 0.0; } }
在你的现有代码中使用
结合你已有的时间相加逻辑,只需要在得到date3后调用这个方法:
// ...你的现有代码片段... String date3 = timeFormat.format(new Date(sum)); System.out.println("The sum is "+date3);// 08:28 // 转换为浮点数值 double floatTime = convertTimeStringToFloat(date3); System.out.println("浮点时间值:" + floatTime); // 输出约8.4667
额外补充说明
- 时区兼容性:因为我们只是提取时间字符串里的时分数值计算,和你之前用UTC处理时间的逻辑完全不冲突,无需额外调整时区。
- 精度控制:如果需要固定小数位数(比如保留两位),可以用
DecimalFormat格式化结果:DecimalFormat df = new DecimalFormat("#.##"); String formattedFloatTime = df.format(floatTime); - 场景适配:完全匹配你描述的司机行程场景——把浮点格式的耗时转成字符串后和当前时间相加,再转回浮点值存储。
内容的提问来源于stack exchange,提问作者Lahari Areti
相关产品推荐
相关产品推荐

