在java中查找(hh mm ss)格式的平均时间

2024-04-17

我想以 hh:mm:ss 格式计算三个时间的平均值。我尝试了以下代码。

public String calculateAverageOfTime() 
{
    String timeInHHmmss = "08:00:00 08:00:00 08:00:00";
    String[] split = timeInHHmmss.split(" ");
    long hh = 0,mm = 0,ss = 0;
    for (int i = 0; i < split.length; i++)
    {
        String[] split1 = split[i].split(":");            
        hh += Long.valueOf(split1[0].trim());
        mm += Long.valueOf(split1[1].trim()); 
        ss += Long.valueOf(split1[2].trim());
    }
    hh = hh / split.length ;
    mm = mm / split.length ;
    ss = ss / split.length ;
    String hms = String.format("%02d:%02d:%02d", hh,mm,ss);       
    return hms;
}

这段代码运行良好。有什么有效的方法可以做到这一点吗? 。 Java API 中可用的任何方法。


您当前的代码不正确,请尝试输入08:00:00 08:00:00 09:30:00。正如@StephenC 所说,你不能通过平均小时、分钟、秒组成部分来平均时间。时间就像以 60 为基数的数字,你知道,60 秒 + 1 = 1:00,而不是 61。

这是正确的,计算秒数总和,然后取平均值并转换回时间:

public static String calculateAverageOfTime(String timeInHHmmss) {
    String[] split = timeInHHmmss.split(" ");
    long seconds = 0;
    for (String timestr : split) {
        String[] hhmmss = timestr.split(":");
        seconds += Integer.valueOf(hhmmss[0]) * 60 * 60;
        seconds += Integer.valueOf(hhmmss[1]) * 60;
        seconds += Integer.valueOf(hhmmss[2]);
    }
    seconds /= split.length;
    long hh = seconds / 60 / 60;
    long mm = (seconds / 60) % 60;
    long ss = seconds % 60;
    return String.format("%02d:%02d:%02d", hh,mm,ss);
}

Using Date, SimpleDateFormat or Joda会使代码更容易理解,但我认为它不会比这更有效,因为此代码严格执行您想要执行的操作,即对以 60 为基数的数字求平均值。

正如其他人指出的那样,请注意平均时的精度损失。

您可能还想验证输入字符串的格式是否正确,否则算法将失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中查找(hh mm ss)格式的平均时间 的相关文章

随机推荐

  • 为什么矢量化通常比循环更快?

    为什么在执行操作的硬件的最低级别和所涉及的一般底层操作 即 运行代码时所有编程语言的实际实现通用的事情 矢量化通常比循环快得多 计算机在循环时会做什么而在使用矢量化时不会做什么 我指的是计算机执行的实际计算 而不是程序员编写的计算 或者它有
  • ChrisBanes PullToRefresh“正在加载...”问题

    我正在使用我发现的 chrisbanes 的 PullToRefresh ListViewhere https github com chrisbanes Android PullToRefresh 多亏了它的文档 我成功地实现了它 然而
  • 将 Spark Dataframe 保存到 Elasticsearch - 无法处理类型异常

    我设计了一个简单的作业 使用 Spark 从 MySQL 读取数据并将其保存在 Elasticsearch 中 这是代码 JavaSparkContext sc new JavaSparkContext new SparkConf setA
  • Three.js 中的文本几何

    我在 Three js r74 中的 TextGeometry 遇到一些问题 我该如何正确实施 这是我的代码笔 codepen io cheesyeyes pen eJqZxK 提前致谢 好吧 对于每个正在寻找简单答案而不是链接和其他超载示
  • 如何将数组写入 Google 电子表格?

    我正在构建一个具有整数值的数组 并尝试一次性将其写入 Google 电子表格 var myArray new Array for i 1 i lt 100 i myArray i i ss getRange 8 4 1 100 setVal
  • 如何通过连接到 Linux 计算机的 GSM/GPRS 调制解调器发送彩信? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个目录 其中包含 50 个图像
  • 9 补丁填充区域不适用于多个比例区域

    在我的 9 补丁中 我添加了一个填充区域 作为占据红色矩形下方大部分宽度的内容 然而 正如比例图像所示 它不起作用 如果我删除箭头所示的比例区域 那么它就可以完美工作 我做错了什么或者不理解 9 补丁吗 Thanks 我找到了一个相关的答案
  • Rails:form_for复选框设置为true或false,无论该框被选中/取消选中

    我有一个名为 users 的模型 它有 2 个布尔属性send email and send text 我有一个编辑用户模型的表单 我希望它根据该框是否选中 取消选中将这些属性设置为 true false 这是我的表格 div class
  • C# 泛型类型推断与协方差 - bug 或限制

    当具有依赖参数的泛型方法推断类型时 它在某些情况下会给出意外的结果 如果我明确指定类型 则一切都可以正常工作 无需任何进一步的更改 IEnumerable
  • 两个相同的 git 存储库

    我们在一个大团队中使用 git 作为项目的源代码 现在大约有一半的开发商正在离开 进入项目的现场阶段 此阶段将涉及大量开发 即许多提交 同时剩下的另一半也将继续编写代码 不幸的是 现场的互联网连接时断时续且不可靠 然而 至关重要的是 现场团
  • Julia JUMP Gurobi MIP - 查询并存储最佳目标并在运行时绑定

    我通过 Julia 中的 JuMP 包使用 Gurobi 来解决混合整数程序 我想获得一个图表像这个 https i stack imgur com 427LC png 其中还提供了基于 Python 的解决方案 也已在古罗比社区形式 ht
  • 如何在 Swift 中访问深度嵌套字典

    我的应用程序中有一个非常复杂的数据结构 我需要对其进行操作 我正在尝试跟踪玩家的花园中有多少种错误 虫子有十种 每种有十种图案 每种图案有十种颜色 因此可能存在 1000 个独特的错误 我想跟踪玩家拥有的每种类型的错误数量 嵌套字典如下所示
  • WPF MVVM EF 简单示例

    当我正在努力将数据插入视图模型时 我希望有人可以帮助我开始这个简单的 WPF MVVM 示例 我有一个 SQL 表温度 其中每个记录都有一个时间戳 然后是一个数值 例如 记录时间 温度2013年1月1日 00 00 6001 01 2013
  • 如何在多个Lua State(多线程)之间传递数据?

    我在中启动Redis连接池redis lua 通过从 C 调用 我得到了redis lua state 此 Lua 状态全局启动一次 仅在其他线程中启动get从中 当有一个 HTTP 请求 工作线程 时 我需要从redis lua stat
  • 将角度定量数据转换为定性图像

    我是一名晶体学家 试图从多达 5000 个文件中分析晶体方向 Matlab 能否转换表格中的角度值 如下所示 进入一个看起来像这样的表 这是一个基于 Lakesh 想法的更具体的例子 然而 这将处理任意数量的旋转 首先从中间有一条带的基本圆
  • 如何将地名词典或词典表示为 crf++ 中的特征?

    如何使用地名词典或词典作为功能CRF https taku910 github io crfpp 详细说明 假设我想对人名进行 NER 并且我有一个包含常见人名的地名词典 或字典 我想使用这个地名词典作为 crf 的输入 我该怎么做 我正在
  • 使用来自不同模块的 python 装饰器函数

    我想使用另一个模块中的函数作为装饰器 但我需要它来操作当前模块的全局命名空间 例如 我希望能够从这里开始 class SomeClass pass root SomeClass to this from othermodule import
  • 什么时候可以比较 C++ 中同一对象的指针?

    例如 我有一些类层次结构 可能具有各种继承 公共 私有 公共虚拟 多重继承等 class A int a public virtual A class B public A int b class C public virtual B in
  • iphone - 什么消耗更少的电池?开始监控位置更改或开始监控区域?

    我希望您向我提供关于哪种方法消耗更少电池的反馈 我的应用程序将在后台运行 并会随着位置变化而唤醒 所以我想使用消耗更少电池的方法 有什么想法吗 Thanks 这些选择都不会增加或减少电池消耗 为了让您的应用收到任何位置更新的通知 无论是区域
  • 在java中查找(hh mm ss)格式的平均时间

    我想以 hh mm ss 格式计算三个时间的平均值 我尝试了以下代码 public String calculateAverageOfTime String timeInHHmmss 08 00 00 08 00 00 08 00 00 S