78 votes

millisecondes à temps en javascript

J'ai cette fonction qui formate les secondes au temps

 function secondsToTime(secs){
    var hours = Math.floor(secs / (60 * 60));
    var divisor_for_minutes = secs % (60 * 60);
    var minutes = Math.floor(divisor_for_minutes / 60);
    var divisor_for_seconds = divisor_for_minutes % 60;
    var seconds = Math.ceil(divisor_for_seconds);
    return minutes + ":" + seconds; 
}

il fonctionne très bien mais j'ai besoin d'une fonction pour transformer les millisecondes en temps et je n'arrive pas à comprendre ce que je dois faire à cette fonction pour retourner le temps dans ce format.

mm:ss.mill
01:28.5568

3 votes

Voyons voir ici 1 seconde = 1000ms donc...

1 votes

En ce qui me concerne, 1000 ms font une seconde, alors comment pouvez-vous avoir un nombre à 4 chiffres dans la zone ms ?

3voto

Roman Podlinov Points 1294

Prons :

  • code simple et propre ; facile à modifier pour vos besoins
  • prendre en charge n'importe quel nombre d'heures (>24 heures est acceptable)
  • formater l'heure comme 00:00:00.0

Vous pouvez le mettre dans un fichier d'aide

export const msecToTime = ms => {
  const milliseconds = ms % 1000
  const seconds = Math.floor((ms / 1000) % 60)
  const minutes = Math.floor((ms / (60 * 1000)) % 60)
  const hours = Math.floor((ms / (3600 * 1000)) % 3600)
  return `${hours < 10 ? '0' + hours : hours}:${minutes < 10 ? '0' + minutes : minutes}:${
    seconds < 10 ? '0' + seconds : seconds
  }.${milliseconds}`
}

3voto

Mike Samuel Points 54712
function millisecondsToTime(millisecs){
  var ms = Math.abs(millisecs) % 1000;
  var secs = (millisecs < 0 ? -1 : 1) * ((Math.abs(millisecs) - ms) / 1000);
  ms = '' + ms;
  ms = '000'.substring(ms.length) + ms;
  return secsToTime(secs) + '.' + ms;
}

2voto

user1321244 Points 65

Modification de la solution de RobG et utilisation de la fonction Date() de JavaScript.

function msToTime(ms) {

    function addZ(n) {
        return (n<10? '0':'') + n;
    }
    var dt = new Date(ms);
    var hrs = dt.getHours();
    var mins = dt.getMinutes();
    var secs = dt.getSeconds();
    var millis = dt.getMilliseconds();

    var tm = addZ(hrs) + ':' + addZ(mins) + ':' + addZ(secs) + "." + millis;
    return tm;
}

1voto

FilippoG Points 78
function msToTime(s) {

  var d = new Date(s); 
  var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " 
    + ("0" + d.getHours()).slice(-2) 
    + ":" + ("0" + d.getMinutes()).slice(-2)
    + ":" + ("0" + d.getSeconds()).slice(-2)
    +"."+d.getMilliseconds();

  return datestring;      

}

sortie 16-10-2019 18:55:32.605

1voto

Martín Canaval Points 1381

Pourquoi pas :

function msToTime(ms){
    var secs = Math.floor(ms / 1000);
    var msleft = ms % 1000;
    var hours = Math.floor(secs / (60 * 60));
    var divisor_for_minutes = secs % (60 * 60);
    var minutes = Math.floor(divisor_for_minutes / 60);
    var divisor_for_seconds = divisor_for_minutes % 60;
    var seconds = Math.ceil(divisor_for_seconds);
    return hours + ":" + minutes + ":" + seconds  + ":" + msleft; 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X