2012-04-03 11 views
17

Ho un codice che genera un intervallo di tempo per calcolare una durata di qualche azione. Quello che voglio fare è prendere quel risultato (la durata) e dividerlo per un numero, qualsiasi numero.Divisione di tempo per un numero

Come posso farlo?

+1

ho provato la fusione, ma il compilatore restituisce un errore. Se ottengo un risultato di 0,0000000004, voglio dividere quel numero, diciamo, in 4. Questo è solo un esempio. – Novak

+1

possibile duplicato di [Multiply TimeSpan in .NET] (http://stackoverflow.com/questions/9909086/multiply-timespan-in-net) –

risposta

7

provare

TimeSpan X = ...; 

var Result = X.TotalMilliseconds/WhatEverNumber; 

Per riferimento vedere MSDN.

+3

Questo ti darà un doppio, non un TimeSpan. Guarda le altre risposte. – DCShannon

8

Utilizzare una delle proprietà Total* di TimeSpan che sono numeri.

I.e. se si sta eseguendo cinque iterazioni del codice, che si misura, quindi è possibile utilizzare

myTimeSpan.TotalMilliseconds/5 

per ottenere il numero medio di millisecondi per iterazione. È possibile utilizzare Ticks per ottenere il valore sottostante e creare un nuovo TimeSpan dal risultato diviso.

+0

Totalmente, uomo !!! – Oded

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

È possibile utilizzare le zecche del periodo originale:

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

Fare l'upvoting perché è la prima risposta di divisione intera, che, quando disponibile, è quasi sempre una scelta migliore. – Ekevoo

+0

Per tutti gli sviluppatori VB.NET che si imbattono in questa risposta utile: l'operatore di divisione è una divisione _integer_, quindi utilizzare l'operatore \ VB (backslash) per evitare un errore _Option Strict On non consente la conversione implicita da "Double" a "Long" _. –

0

dipende da ciò che si vuole dividere, ma diciamo che si desidera secondi, è possibile utilizzare la proprietà totalseconds.

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

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

Se si vuole finire con un nuovo TimeSpan che è una frazione del vecchio:

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