C#时间平均[关闭]

Posted

技术标签:

【中文标题】C#时间平均[关闭]【英文标题】:C# Time Average [closed] 【发布时间】:2016-03-09 14:36:09 【问题描述】:

如何计算给定列表的平均值,内容如下所述:

06:56
06:58
06:55
06:54
06:54
06:53
06:55
06:53
06:58
06:54
06:58
06:55
06:54
06:50
06:54
06:57

有什么想法吗?!?

【问题讨论】:

这个列表是如何声明的?哪个Type 在 C# 中只有一行代码,请不要发布它,如果有什么不适合的,我们会尽力帮助您... 将其转换为小数(整小时、小数分钟),然后取平均值。 这只是一个包含一堆日期时间格式的小时条目的列表。 为什么这么残忍的家伙?他在这里问了第二个问题…… 【参考方案1】:
        var times = new List<string>
        
            "06:56",
            "06:58",
            "06:55",
            "06:54",
            "06:54",
            "06:53",
            "06:55",
            "06:53",
            "06:58",
            "06:54",
            "06:58",
            "06:55",
            "06:54",
            "06:50",
            "06:54",
            "06:57"
        ;
        var average = times
            .Select(TimeSpan.Parse)
            .Average(x => x.TotalMilliseconds);

        var averageTime = TimeSpan.FromMilliseconds(average);

【讨论】:

这里有一个变化:[查找时间跨度集合的平均值]***.com/a/8847711/3527297 对刻度进行平均(尽管不是这里的示例数据)可能为亚秒值提供更高的精度。 【参考方案2】:

将值转换为 TimeSpan。您可以直接将输出作为正确的数据类型进行平均。

附录

添加来自@gabba 的答案,提供字符串列表和上面使用刻度的链接,您可以通过这种方式计算平均值:

TimeSpan average = new TimeSpan(Convert.ToInt64(times.Average(x => TimeSpan.Parse(x).Ticks)));

结果值当然是一样的:06:54:52.500

【讨论】:

谢谢各位!我会试试你建议的。

以上是关于C#时间平均[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 迁移到 C++ [关闭]

具有任意数量参数的函数的 C# 记忆[关闭]

了解平均负载与 CPU 使用率 [关闭]

如何从字符串中找到平均字长? [关闭]

计算平均值而不添加负等级退出循环[关闭]

如何找到R中分类列的平均值[关闭]