2010-06-01 6 views
1

J'utilise actuellement cette méthode pour convertir des millisecondes en min: sec: 1/10sec. Cependant, il ne semble pas être efficace du tout. Quelqu'un serait-il au courant d'une manière plus efficace et plus rapide d'accomplir la même chose.Une méthode de conversion en millisecondes plus efficace?

mills.prototype.formatTime = function(time) { 
    var elapsedTime = (time * 1000); 
    //Minutes 
    var elapsedM = (elapsedTime/60000)|0; 
    var remaining = elapsedTime - (elapsedM * 60000); 
    //add a leading zero if it's a single digit number 
    if (elapsedM < 10) { 
      elapsedM = "0"+elapsedM; 
      } 
    //Seconds 
    var elapsedS = ((remaining/1000)|0); 
    remaining -= (elapsedS*1000); 
     ////add leading zero 
     if (elapsedS<10) { 
      elapsedS = "0"+elapsedS; 
     } 
    //Hundredths 
    var elapsedFractions = ((remaining/10)|0); 
     if (elapsedFractions < 10) { 
      elapsedFractions = "0"+elapsedFractions; 
     } 
    //display results nicely 
    var time_data = elapsedM+":"+elapsedS+":"+elapsedFractions; 
    //return time_data; 
    return[time_data,elapsedM,elapsedS,elapsedFractions] 
    }; 
+1

Ne vous inquiétez pas des micro-optimisations comme ça dans JS, vous pourriez finir par faire empirer les choses. À moins que ce soit * sensiblement perceptible * lent, je ne voudrais pas déranger. –

+0

Il fonctionne sensiblement lentement. Il est utilisé dans un événement de déplacement, mis à jour de manière dynamique lors du déplacement. – cube

Répondre

4

Pourquoi ne pas utiliser l'objet date?

var dateObj=new Date(3500); 
var minPart=dateObj.getMinutes(); 
var secondsPart=dateObj.getSeconds(); 
var tenthsPart=dateObj.getMilliseconds()/100; 

alert(minPart+':'+secondsPart+':'+tenthsPart); 

More info.

+0

Ahahahaha .... semble beaucoup plus efficace que le code affiché ci-dessus .. + 1 – Warty

+0

Oui, cette façon est certainement plus petite. Je me demande simplement si cela fonctionne plus rapidement en utilisant l'objet date et ses méthodes par rapport à l'exécution de routines mathématiques sur des nombres bruts. Des pensées à ce sujet? – cube

+0

Vous avez raison. Il s'est avéré être plus lent. Une idée pour vous serait d'utiliser setInterval et d'avoir la fonction de minuterie mettre à jour l'heure à intervalles réguliers et vous n'aurez qu'à saisir la valeur lorsque vous faites glisser. De cette façon, vous n'avez pas besoin de calculer l'heure en faisant glisser. –

Questions connexes