大家好,我目前正在开展一个项目,当某个事件发生时,有关事件的详细信息,包括事件发生的时间被添加到列表数组中。
方法完成后,我将列表传递给另一个检查其值的方法。在我完成循环之前,我会检查PC的当前时间,然后我需要检查列表数组中保存的时间与当前时间之间的差异是否大于5秒。
我将如何做到这一点。
答案 0 :(得分:216)
假设dateTime1
和dateTime2
为DateTime
值:
var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;
在您的情况下,您将使用DateTime.Now
作为其中一个值和列表中的时间。请注意订单,因为如果dateTime1
早于dateTime2
,结果可能为负。
答案 1 :(得分:15)
对于这样的场合,DateTime有一个Subtract method和一个overloaded -
operator:
DateTime now = DateTime.UtcNow;
TimeSpan difference = now.Subtract(otherTime); // could also write `now - otherTime`
if (difference.TotalSeconds > 5) { ... }
答案 2 :(得分:11)
此版本始终将秒数差异作为正数返回(与@ freedeveloper的解决方案相同):
var seconds = System.Math.Abs((date1 - date2).TotalSeconds);
答案 3 :(得分:3)
我用它来避免负面间隔。
var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds;