计算2个计时器值之间的平均值

Ven*_*nki 1 c# java puzzle

我编写了一个执行此功能的函数,我对性能和实现不满意.我想看看是否有人可以帮助我以有效的方式实现这个漂亮的功能.

该函数应返回一个字符串,该字符串是传递的2个计时器值之间的平均时间.2个计时器值的格式的两个字符串"MM:SS:HS"如果值例如"02:02:20""04:04:40"传递给它应输出这些值之间的平均时间并返回它在同一格式的字符串的函数"03.03.30".

我想用C#实现它,Java也很好.

期待您的解决方案.谢谢阅读!

Jon*_*eet 9

  • 使用TimeSpan.Parse解析两个值
  • 将它们加在一起
  • 取sum(TimeSpan.Ticks)的滴答数并除以2得到平均值(因为你不能TimeSpan直接划分)
  • 使用TimeSpan.FromTicks转换回一个TimeSpan
  • 调用ToString从a转换回TimeSpan字符串.

(我不确定为什么其他答案建议减法,当通常通过增加值然后除以... 来获得平均值时)

就个人而言,我可能会将其拆分为两种方法,其中一种方法只进行平均部分,另一种方法进行文本转换:

public static TimeSpan Average(TimeSpan first, TimeSpan second)
{
    return TimeSpan.FromTicks((first + second).Ticks / 2);
}

public static string Average(string first, string second)
{
    TimeSpan firstSpan = TimeSpan.Parse(first);
    TimeSpan secondSpan = TimeSpan.Parse(second);
    return Average(firstSpan, secondSpan).ToString();
}
Run Code Online (Sandbox Code Playgroud)

你可能需要乱七八糟以获得你想要的确切文本格式 - 在.NET 4中有比以前更多的选项,使用ToString格式字符串等.