Überprüfen Sie die Differenz in Sekunden zwischen zwei Malen


100

Hallo zusammen, ich arbeite derzeit an einem Projekt, bei dem Details zu dem Ereignis, einschließlich des Zeitpunkts, zu dem das Ereignis aufgetreten ist, einem Listenarray hinzugefügt werden, wenn ein bestimmtes Ereignis eintritt.

Sobald die Methode fertig ist, leite ich die Liste an eine andere Methode weiter, die ihre Werte überprüft. Bevor ich die Schleife durchlaufe, überprüfe ich die aktuelle Zeit meines PCs und muss prüfen, ob die Differenz zwischen der im Listenarray gespeicherten Zeit und der aktuellen Zeit größer als 5 Sekunden ist.

Wie würde ich das machen?

Antworten:


264

Angenommen dateTime1und dateTime2sind DateTimeWerte:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;

In Ihrem Fall würden Sie DateTime.Nowals einen der Werte und die Zeit in der Liste als den anderen verwenden. Achten Sie auf die Reihenfolge, da das Ergebnis negativ sein kann, wenn dateTime1es früher als ist dateTime2.



3
Danke ... Ich bin gerade durch die versehentliche Verwendung von (Millisekunden) gebissen worden, als ich eigentlich (TotalMillisekunden) hätte verwenden sollen ... autsch.
Andrew Pate


15

Diese Version gibt immer die Differenz von Sekunden als positive Zahl zurück (dasselbe Ergebnis wie die Lösung von @ freedeveloper):

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

4

Ich benutze dies, um ein negatives Intervall zu vermeiden.

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

4
Verwenden Sie Math.Absstattdessen diesen Code, der weniger lesbar und leistungsfähiger ist als nur die obige Antwort.
ProgramFast
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.