2010-06-01 60 views
1

我目前使用這種方法將毫秒轉換爲min:sec:1/10sec。 然而,它似乎並不高效。誰會知道更快,更高效和最優化的完成方式。更有效的毫秒轉換方法?

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

不要擔心微優化,例如,在JS,你纔可能最終使情況變得更糟。除非它顯着*慢,否則我不打擾。 – 2010-06-01 01:45:38

+0

它表現明顯很慢。它在拖動事件中使用,在拖動時動態更新。 – cube 2010-06-01 04:10:55

回答

4

爲什麼不使用日期對象?

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 ....看起來比上面發佈的代碼更高效.. + 1 – Warty 2010-06-01 01:51:10

+0

是的,這種方式肯定比較小。我只是想知道它是否通過使用日期對象及其方法與在原始數字上運行數學例程相比更快地執行。對此有何想法? – cube 2010-06-01 04:10:24

+0

你是對的。結果變慢了。一個想法是使用setInterval並讓計時器函數以一定的時間間隔更新時間,並且您只需在拖動時獲取該值。這樣,您不需要在拖動時計算時間。 – 2010-06-01 13:04:20