c00*_*0fd 16 c# datetime average
如果我有一个DateTime值数组:
List<DateTime> arrayDateTimes;
Run Code Online (Sandbox Code Playgroud)
在它们中找到平均DateTime的方法是什么?
例如,如果我有:
2003-May-21 15:00:00
2003-May-21 19:00:00
2003-May-21 20:00:00
Run Code Online (Sandbox Code Playgroud)
平均值应该是:
2003-May-21 18:00:00
Run Code Online (Sandbox Code Playgroud)
Dam*_*ith 13
如果您有大型列表,可以使用以下方法
var count = dates.Count;
double temp = 0D;
for (int i = 0; i < count; i++)
{
temp += dates[i].Ticks / (double)count;
}
var average = new DateTime((long)temp);
Run Code Online (Sandbox Code Playgroud)
这不应该溢出,它确实假设日期时间是有序的,但:
var first = dates.First().Ticks;
var average = new DateTime(first + (long) dates.Average(d => d.Ticks - first));
Run Code Online (Sandbox Code Playgroud)
事实上,上面确实溢出了更大的列表和更大的间隙.我认为你可以用秒来获得更好的射程.(再次,排序第一)此外,这可能不是最高性能的方法,但仍然完成10M日期对我来说相对较快.不确定是否更容易阅读,YYMV.
var first = dates.First();
var average = first.AddSeconds(dates.Average(d => (d - first).TotalSeconds));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11666 次 |
最近记录: |