Sprawdź różnicę w sekundach między dwoma czasami


105

Witam wszystkich Obecnie pracuję nad projektem, w którym, gdy ma miejsce określone zdarzenie, szczegółowe informacje o zdarzeniu, w tym czas wystąpienia zdarzenia, są dodawane do tablicy listy.

Po zakończeniu metody przekazuję listę do innej metody, która sprawdza jej wartości. Zanim przejdę przez pętlę, sprawdzam aktualny czas komputera i muszę sprawdzić, czy różnica między czasem zapisanym w tablicy list a aktualnym czasem jest większa niż 5 sekund.

Jak bym to zrobił.

Odpowiedzi:


272

Zakładając dateTime1i dateTime2DateTimewartościami:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;

W twoim przypadku użyjesz DateTime.Nowjednej z wartości, a czasu na liście jako drugiej. Uważaj na kolejność, ponieważ wynik może być ujemny, jeśli dateTime1jest wcześniejszy niż dateTime2.


3
Dzięki, nawiasem mówiąc, var będzie w końcu jest podwójne: totalseconds
Loaderon

3
Dzięki ... Właśnie zostałem ugryziony przez pomyłkę przy użyciu (Milisekund), podczas gdy naprawdę powinienem był użyć (TotalMilliseconds) ... och.
pasztet


15

Ta wersja zawsze zwraca liczbę sekund różnicy jako liczbę dodatnią (taki sam wynik jak rozwiązanie @ freedeveloper):

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

4

Używam tego, aby uniknąć ujemnego interwału.

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

4
Użyj Math.Abszamiast tego, ten kod jest mniej czytelny i mniej wydajny niż użycie powyższej odpowiedzi.
ProgramFast
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.