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#时间平均[关闭]的主要内容,如果未能解决你的问题,请参考以下文章