获取日期时间列差值的平均值
本文关键字:平均值 取日期 时间 获取 | 更新日期: 2023-09-27 18:15:42
我有一个Item
类
public class Item {
//...
public DateTime CreateDate { get; set; }
public DateTime EndDate { get; set; }
}
在一个方法中,我有List<Item> items
。如何比遍历列表更简洁地查询日期差异的平均值?double days = 0;
int total = 0;
foreach (var @t in results)
{
if (@t.EndDate != null)
{
total++;
TimeSpan ts = (TimeSpan)(@t.EndDate - @t.CreateDate);
days = ts.TotalDays;
}
}
double avg = days / total;
var avg = results.Average( x => (x.EndDate - x.CreateDate).TotalDays );
过滤空EndDate
值并假设CreateDate不是DateTime?
类型的版本:
var avg = results.Where( x=> x.EndDate.HasValue)
.Average( x => (x.EndDate.Value - x.CreateDate).TotalDays );
编辑
要求将持续时间格式化为dd:HH:ss
格式。为此,我们应该计算总毫秒数(或秒数)的平均值,并执行如下操作:
var avg = results.Where(x=> x.EndDate.HasValue && x.CreateDate.HasValue)
.Average( x => (x.EndDate.Value - x.CreateDate.Value).TotalMilliseconds );
var fancyOutput = TimeSpan.FromMilliseconds( avg );
Response.Write( fancyOutput.ToString() );
TimeSpan.ToString ()