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 dateTime2są DateTimewartoś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.