2012-01-20 30 views
52

大家好我目前正在开发一个项目,当某个事件发生时,发生事件的详细信息(包括事件发生的时间)被添加到列表数组中。检查两次之间的差异秒数

一旦方法结束,我将列表传递给另一个检查其值的方法。在我通过循环之前,检查我的PC的当前时间,并且需要检查列表数组中保存的时间与当前时间之间的差异是否大于5秒。

我该如何去做这件事。

回答

159

假设dateTime1dateTime2DateTime值:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds; 

在你的情况,你倒是用DateTime.Now的价值之一,并在列表中的其他时间。请小心订单,因为如果dateTime1早于dateTime2,结果可能为负值。

+1

感谢,顺便说一下,变种最终会被双:[TotalSeconds ](https://msdn.microsoft.com/en-us/library/system.timespan.totalseconds(v = vs.110).aspx) – Loaderon

+0

谢谢......我刚刚被咬了(毫秒)当我应该真正使用错误(TotalMilliseconds)... ouch。 –

11

的DateTime有Subtract methodoverloaded - operator只是这样的场合:

DateTime now = DateTime.UtcNow; 
TimeSpan difference = now.Subtract(otherTime); // could also write `now - otherTime` 
if (difference.TotalSeconds > 5) { ... } 
3

我利用这一点避免负的区间。

var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds; 
7

这个版本总是返回秒差为正数号码(相同的结果@ freedeveloper的解决方案):

var seconds = System.Math.Abs((date1 - date2).TotalSeconds);