2012-01-20 79 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);