2012-07-11 7 views
5

Sto usando il codice diTimeSpan.TotalMinutes senza secondi

var minutesPassed = (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 

per calcolare quanto minuti trascorsi tra due date. Il risultato che ottengo assomiglia

254,54445556

ottengo minuti e secondi. Come ottenere il risultato che conterrebbe pochi minuti come questo

?

risposta

5

Basta convertire in modo esplicito il risultato int:

var minutesPassed = (int)(DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 
+0

Ciò arrotondare fino a 255 – Curt

+0

@Curt questo non è corretto. –

+0

La conversione di '254.54445556' in un' int' non verrebbe arrotondata? – Curt

7

Usa Math.Floor() per convertire 254.xxxx a 254:

var minutesPassed = Math.Floor((DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes); 
3

si può solo ottenere la parte int

int minutes = (int) (DateTime.UtcNow - conversionsList.Last().DateStamp).TotalMinutes; 

questo ti porterà la parte int del valore.

MODIFICA: per quanto riguarda l'arrotondamento del valore. Quello non è vero. Si consideri il seguente:

double d = 254.99999999999d; 
int test = (int)d; 

Qui test terrà 254, non 255

L'unico problema con il cast esplicito è OverFlowException

+0

Questo arriverà fino a 255 – Curt

+1

@Curt, non lo farà, ho provato questo in Visual Studio e sta dando 254. double d = 254.54445556d; int test = (int) d; Correggimi se il mio test è sbagliato – Habib

+0

Cheers l'ho sempre pensato arrotondato al più vicino int. Sorpreso! – Curt