2012-07-11 19 views
5

estoy usando el códigoTimeSpan.TotalMinutes sin segundos

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

para calcular la cantidad de minutos transcurrido entre dos fechas. El resultado que obtengo parece

254,54445556

consigo minutos y segundos. Cómo obtener el resultado que contendría sólo unos minutos como esto

?

Respuesta

5

Sólo convertir explícitamente el resultado de int:

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

Esto redondear hasta 255 – Curt

+0

@Curt eso no es correcto. –

+0

¿Convertir '254.54445556' a un' int' no se redondearía? – Curt

7

Uso Math.Floor() para convertir 254.xxxx a 254:

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

Usted puede obtener sólo la parte int

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

esto te dará la parte int del valor.

EDITAR: en cuanto se considera el redondeo de valor. Eso no es verdad. Considere lo siguiente:

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

Aquí test llevará a cabo 254, no 255

El único problema con la conversión explícita es OverFlowException

+0

Esto redondearía hasta 255 – Curt

+1

@Curt, no lo hará, probé esto en Visual Studio y está dando 254. double d = 254.54445556d; int test = (int) d; Corrígeme si mi prueba es incorrecta – Habib

+0

Saludos Siempre pensé que se redondeaba a la int más cercana. ¡Sorprendido! – Curt

Cuestiones relacionadas