2012-07-11 7 views
5

Używam kodTimeSpan.TotalMinutes bez sekund

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

obliczyć, ile minut minęło między dwiema datami. Wynik, który mam wygląda

254,54445556

uzyskać minuty i sekundy. Jak uzyskać wynik, który będzie zawierał tylko kilka minut jak ten

?

Odpowiedz

5

Wystarczy jawnie przekonwertować wynik int:

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

Byłoby to zaokrąglić w górę do 255 – Curt

+0

@Curt to nie jest poprawne. –

+0

Konwersja '254.54445556' na' int' nie zaokrąglałaby się? – Curt

7

Zastosowanie Math.Floor() przekonwertować 254.xxxx do 254:

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

można uzyskać tylko część int

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

to dostaniesz int części wartości.

EDYCJA: o ile rozważane jest zaokrąglanie wartości. To nie jest prawda. Rozważmy następujący:

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

Tutaj test odbędzie 254 nie 255

Jedyny problem z wyraźną obsadzie jest OverFlowException

+0

To zaokrągliłoby do 255 – Curt

+1

@Curt, nie będzie, próbowałem tego w Visual studio i daje 254. double d = 254.54445556d; int test = (int) d; Popraw mnie, jeśli mój test jest zły – Habib

+0

Wiwaty Zawsze myślałem, że jest zaokrąglone do najbliższej int. Zaskoczony! – Curt