2012-04-03 26 views
17

Tengo un código que genera un intervalo de tiempo para calcular la duración de alguna acción. Lo que quiero hacer es tomar ese resultado (la duración) y dividirlo por un número, cualquier número.División de Timespan por un número

¿Cómo puedo hacer eso?

+1

Probé la fundición, pero el compilador devuelve un error. Si obtengo un resultado de 0.0000000004, quiero dividir ese número, digamos, en 4. Esto es solo un ejemplo. – Novak

+1

posible duplicado de [Multiplicar TimeSpan en .NET] (http://stackoverflow.com/questions/9909086/multiply-timespan-in-net) –

Respuesta

7

tratar

TimeSpan X = ...; 

var Result = X.TotalMilliseconds/WhatEverNumber; 

Para referencia ver MSDN.

+3

Esto le dará un doble, no un TimeSpan. Ver las otras respuestas – DCShannon

8

Utilice una de las propiedades Total* del TimeSpan que son números.

I.e. si se está ejecutando cinco iteraciones de un cierto código, que se mide, entonces se puede utilizar

myTimeSpan.TotalMilliseconds/5 

para obtener el número promedio de milisegundos por iteración. Puede usar el Ticks para obtener el valor subyacente y construir un nuevo TimeSpan a partir del resultado dividido.

+0

Totally man !!! – Oded

5
TimeSpan ts = ... 
TimeSpan result = TimeSpan.FromTicks(ts.Ticks/divisor); 
25

Puede utilizar garrapatas del intervalo de tiempo original:

var res = new TimeSpan(origSpan.Ticks/aNumberAnyNumber); 
+0

Upvoting porque es la primera respuesta de división entera, que, cuando está disponible, casi siempre es una mejor opción. – Ekevoo

+0

Para todos los desarrolladores de VB.NET que encuentren esta útil respuesta: el operador de división es una división _integer_, así que utilice el operador \ VB (barra invertida) para evitar un error _Option Strict On no permite la conversión implícita de 'Doble' a 'Largo' _. –

0

depende de lo que desea dividir, pero digamos que desea segundos, se puede utilizar la propiedad totalseconds.

TimeSpan ts = new TimeSpan(4, 0, 0); //Four hours 

MessageBox.Show((ts.TotalSeconds/4).ToString()); 
3

Si quieres acabar con un nuevo TimeSpan que es una fracción de la edad:

TimeSpan now = DateTime.Now.TimeOfDay; 
TimeSpan halfOfNow = new TimeSpan(now.Ticks/2);