C# DateTime TimeSpan 持续时间?

标签 c# datetime

我有进出时间的日志。我想在日志中有一列是一次登录的总时间,旁边是该人在整个日志中的总登录时间。

我一直在使用 TimeSpan 对象获得第一个持续时间,但是在我翻阅结果集的同时不断累加总时间让我难以理解:

// Set duration of this visit
timeInRoom = -(ieLog.Ingresstime - ieLog.Egresstime);

我试过使用另一个 TimeSpan 变量来保存上一次迭代的值,并将 timeInRoom 添加到该变量中,这样我就可以进行计数,但这似乎不起作用。

我猜我的做法是错误的。有任何想法吗?时间是结果集中的 DateTime 值。

谢谢。

最佳答案

像这样的东西应该可以工作:

var timeInRoom = new TimeSpan();
foreach(var log in logs)
{
    timeInRoom += log.Egresstime - log.IngressTime;
}

或者,如果您是 LINQ 的粉丝:

logs.Aggregate(new TimeSpan(), 
               (ts, log) => ts + (log.Egresstime - log.IngressTime));

关于C# DateTime TimeSpan 持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107474/

相关文章:

c# - 如何在 Prism 框架中的模块之间正确发送事件消息?

java - 从 Hijri 日期到 Java 中的 Gregorian

PHP 日期/时间到时间戳(自定义格式)

datetime - Freemarker 是否有与 JodaTime 的集成?

python - Pandas 从非统一的日期列表中查找一年前的日期

c# - PUN OnPlayerPropertiesChanged 和对象启用

c# - 如何从 XML 中获取我想要的节点

c# - SecurityManager.IsGranted() 行为

c# - WPF DataGrid,从 View 中获取数据表

NHibernate DateTimeOffsetType代理源码?