Controlla la differenza in secondi tra due volte


100

Ciao a tutti, sto attualmente lavorando a un progetto in cui quando si verifica un determinato evento, i dettagli sull'evento, inclusa l'ora in cui si è verificato l'evento, vengono aggiunti in un array di elenchi.

Una volta terminato il metodo, passo l'elenco a un altro metodo che ne verifica i valori. Prima di eseguire il ciclo, controllo l'ora corrente del mio PC e devo verificare se la differenza tra l'ora salvata nella matrice dell'elenco e l'ora corrente è maggiore di 5 secondi.

Come potrei fare questo.

Risposte:


264

Supponendo dateTime1e dateTime2sono DateTimevalori:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;

Nel tuo caso, useresti DateTime.Nowcome uno dei valori e l'ora nell'elenco come l'altro. Fai attenzione all'ordine, poiché il risultato può essere negativo se dateTime1è precedente a dateTime2.


3
Grazie, a proposito, var finirà per essere il doppio: TotalSeconds
Loaderon

3
Grazie ... Sono appena stato morso usando (Millisecondi) per errore quando avrei dovuto davvero usare (TotalMillisecondi) ... ahi.
andrew pate


15

Questa versione restituisce sempre la differenza del numero di secondi come numero positivo (stesso risultato della soluzione di @ freedeveloper):

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

4

Lo uso per evitare un intervallo negativo.

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

4
Usa Math.Absinvece, questo codice è meno leggibile e performante rispetto alla semplice risposta sopra.
ProgrammaVeloce
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.