2016-02-17 8 views
7

Come posso convertire un valore di un'ora decimale come 1.6578 in hh: mm: ss in jquery o javascript? Sono riuscito solo a farlo a hh: mm utilizzando questo codice:Come convertire il valore dell'ora decimale in hh: mm: ss

var decimaltime= "1.6578"; 
    var hrs = parseInt(Number(decimaltime)); 
    var min = Math.round((Number(decimaltime)-hrs) * 60); 
    var clocktime = hrs+':'+min; 
+1

[momento() StartOf ('giorno') aggiungere (parseFloat ("1,6578"), "ore") formato ("hh: mm: ss");...] (http://momentjs.com/) – Neil

+0

Grazie Neil, mi piacerebbe imparare come farlo in puro javascript se possibile e vorrei anche evitare di aggiungere altre librerie alla mia pagina per ridurre il mio tempo di caricamento già gonfio. Moment.js sembra fantastico! –

risposta

3

Si potrebbe fare qualcosa di simile:

var decimalTimeString = "1.6578"; 
 
var decimalTime = parseFloat(decimalTimeString); 
 
decimalTime = decimalTime * 60 * 60; 
 
var hours = Math.floor((decimalTime/(60 * 60))); 
 
decimalTime = decimalTime - (hours * 60 * 60); 
 
var minutes = Math.floor((decimalTime/60)); 
 
decimalTime = decimalTime - (minutes * 60); 
 
var seconds = Math.round(decimalTime); 
 
if(hours < 10) 
 
{ 
 
\t hours = "0" + hours; 
 
} 
 
if(minutes < 10) 
 
{ 
 
\t minutes = "0" + minutes; 
 
} 
 
if(seconds < 10) 
 
{ 
 
\t seconds = "0" + seconds; 
 
} 
 
alert("" + hours + ":" + minutes + ":" + seconds);

+0

Esattamente quello che stavo cercando! Grazie mille! Capisco la logica dopo aver visto la tua risposta :) –

+0

@Bruno sei il benvenuto! Felice di poterti aiutare! – brso05

4

Piuttosto che fare i calcoli da soli, utilizzare costruito -in funzionalità per impostare i secondi su una data arbitraria di un oggetto Date, convertirlo in una stringa e tagliare la parte della data, lasciando solo la stringa hh: mm: ss.

var decimalTimeString = "1.6578"; 
 
var n = new Date(0,0); 
 
n.setSeconds(+decimalTimeString * 60 * 60); 
 
document.write(n.toTimeString().slice(0, 8));