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.