2009-07-06 12 views
6

Ho un campo di ore in un database come 1.4, 1.5, 1.7 che ho bisogno di riconvertire in HH: MM. Qual è il modo più semplice per farlo?Ora decimale in tempo?

+2

Cos'è 1.4 dovrebbe rappresentare? –

risposta

20

TimeSpan.FromHours:

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

Esempio:

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

Non ho notato questo, ma questo genera una InvalidCastException –

1

Il HH (ora) figura è il numero prima del decimale.

Per ottenere la cifra dei minuti, sottrarre l'intera parte del numero in modo da avere solo l'importo dopo il decimale, quindi moltiplicare la frazione per 60 per ottenere i minuti.

0

Ho trovato che l'approccio TimeSpan nella risposta accettata era valido per le ore < 24 (1 giorno).

Un DateTime approccio adatto alle mie necessità di gestire i tempi> 24 ore senza dover giorni (e non hanno un 0 iniziale):

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