2010-07-26 8 views

Répondre

3

Quelque chose comme ça?

var fraction = 14.5; 
var hours = Math.floor(fraction); // extract the hours (in 24 hour format) 
var mins = 60 * (fraction - hours); // calculate the minutes 
t = new Date(); // create a date/time object 

t.setHours(hours); // set the hours 
t.setMinutes(mins); // set the mins 
alert(t.toTimeString()); //show it 

ou complètement manuel

var fraction = 14.5; 
var hours = Math.floor(fraction); 
var mins = 60 * (fraction - hours); 
var ampm = ((fraction%24)<12)?'am':'pm'; 

formatted = ('0' + hours%12).substr(-2) + ':' + ('0' + mins).substr(-2) + ':00 ' + ampm; 
alert(formatted); 

Mise à jour

Et une version avec secondes et ..

var fraction = 14.33; 
var hours = Math.floor(fraction); 
var allseconds = 3600 * (fraction - hours); 
var minutes = Math.floor(allseconds/60); 
var seconds = Math.floor(allseconds%60); 
var ampm = ((fraction%24)<12)?'am':'pm'; 

formatted = ('0' + hours%12).substr(-2) + ':' + ('0' + minutes).substr(-2) + ':' + ('0' + seconds).substr(-2) +' ' + ampm; 
alert(formatted); 
+0

La fraction stocke également secondes ainsi que minutes, mais qui ressemble à ce que je dois à ce jour – Sarah

+0

@Sarah, a ajouté complètement une autre façon manuel .. –

+0

@Sarah, version ajoutée avec secondes :) –

8
var fraction = 23.5; 

var date = new Date(2000, 1, 1); // use any date as base reference 
date.setUTCSeconds(fraction * 3600); // add number of seconds in fractional hours 

Ensuite, utilisez un script de mise en forme de date tel que this, ou Date.js si vous n'êtes pas friand ou le formatage et le remplissage.

date.format("HH:MM:ss"); // 23:30:00 

See an example. J'utilise la fonction de formatage de here.

+0

+1, brillant .. je l'ai fait tous manuellement .. lol .. * facepalm *! –

+0

+1 oui, le formateur de date de Steven Leviathin est génial pour le formatage de date flexible dans JS: http://blog.stevenlevithan.com/archives/date-time-format – fearoffours

+0

@Gaby - J'ai récemment découvert que JavaScript set * fonctions gérer le débordement très joliment et me mettre dans la crainte :) .. @fearoffours - Il est en effet une bibliothèque légère impressionnante pour les dates de mise en forme lorsque Date.js se sent un peu trop :) – Anurag

0

Fonction manuelle:

 var time = function(num) { 
      if(num < 0 || num >= 24) {throw "Invalid number");} 
      var x = num > 13 ? num - 12 : num; 
      var h = Math.floor(x); 
      var min = x - h; 
      var ampm = num >= 12 && num < 24 ? "pm" : "am"; 

      return (h + ":" + Math.floor(min * 60) + ampm); 
     }; 

Tests:

 time(13.40); // 1:24pm 
     time(11.25); // 11:15pm 
     time(12.50); // 12:30pm 
     time(23.50); // 11:30pm 
     time(0.50); // 0:30am 
     time(24.00); // error!!