2012-01-20 6 views
52

Привет всем Я в настоящее время работаю над проектом, где, когда определенное событие происходит, детали в событии, включая время возникновения события, добавляются в массив списка.Проверить разницу в секундах между двумя значениями

Как только метод закончен, я передаю список другому методу, который проверяет его значения. Прежде чем я пройду через цикл, я проверю текущее время своего ПК, и мне нужно проверить, не превышает ли разница между временем, сохраненным в массиве списка, и текущим временем больше 5 секунд.

Как бы я это сделал.

ответ

159

Предполагая dateTime1 и dateTime2 являются DateTime значения:

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 method и overloaded - 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); 
Смежные вопросы