2012-01-20 11 views
52

Hola a todos Actualmente estoy trabajando en un proyecto en el que cuando ocurre un determinado evento, los detalles sobre el evento, incluido el momento en que ocurrió el evento, se agregan a una matriz de lista.Verifique la diferencia en segundos entre dos veces

Una vez que el método ha terminado, paso la lista a otro método que verifica sus valores. Antes de pasar por el ciclo, verifico la hora actual de mi PC y necesito verificar si la diferencia entre el tiempo guardado en la matriz de listas y la hora actual es mayor a 5 segundos.

¿Cómo podría hacer esto?

Respuesta

159

Suponiendo dateTime1 y dateTime2 son DateTime valores:

var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds; 

En su caso, usted 'd utilizar DateTime.Now como uno de los valores y el tiempo en la lista como el otro. Tenga cuidado con el orden, ya que el resultado puede ser negativo si dateTime1 es anterior a dateTime2.

+1

Gracias, por cierto, var va a terminar siendo doble: [totalseconds ] (https://msdn.microsoft.com/en-us/library/system.timespan.totalseconds (v = vs.110) .aspx) – Loaderon

+0

Gracias ... Me acaban de picar usando (milisegundos) error cuando debería haber usado realmente (TotalMilliseconds) ... ouch. –

11

DateTime tiene una Subtract method y un overloaded - operator para una ocasión como ésta:

DateTime now = DateTime.UtcNow; 
TimeSpan difference = now.Subtract(otherTime); // could also write `now - otherTime` 
if (difference.TotalSeconds > 5) { ... } 
3

Lo utilizo para evitar el intervalo negativo.

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

Esta versión siempre devuelve el número de segundos de diferencia como un número positivo (mismo resultado que la solución de @ freedeveloper):

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