2009-07-06 26 views
6

Tengo un campo de hora en una base de datos como 1.4, 1.5, 1.7 que necesito convertir de nuevo a HH: MM. ¿Cuál es la forma más fácil de hacer esto?Hora decimal en el tiempo?

+2

lo que se supone 1,4 representar? –

Respuesta

20

TimeSpan.FromHours:

double value; 
TimeSpan t = TimeSpan.FromHours(value); 

Ejemplo:

Console.WriteLine(TimeSpan.FromHours(1.4)); // prints 01:24:00 to the console. 
-2
Convert.ToDateTime(float) 
+0

No marqué esto, pero esto arroja una InvalidCastException –

1

El HH (horas) cifra es el número antes del decimal.

Para obtener la cifra de los minutos, reste la porción del número entero para que solo tenga la cantidad después del decimal, luego multiplique la fracción por 60 para obtener los minutos.

0

Encontré que el TimeSpan enfoque en la respuesta aceptada era bueno para horas < 24 (1 día).

Un DateTime enfoque adecuado para mi necesidad de manejar los tiempos> 24 horas sin tener días (y no tienen un 0):

public string DecHrsToHHMM(double dHours) 
    { 
     DateTime dTime = new DateTime().AddHours(dHours); 
     return dTime.ToString("H:mm"); 
    } 
Cuestiones relacionadas