429 Stimmen

JavaScript Sekunden in Zeitstring mit Format hh:mm:ss

Ich möchte eine Zeitspanne umwandeln, d.h., die Anzahl der Sekunden in einen durch Doppelpunkt getrennten Zeitstring (hh:mm:ss)

Ich habe hier einige nützliche Antworten gefunden, aber sie sprechen alle von der Umwandlung in das Format von x Stunden und x Minuten.

Gibt es also einen kleinen Ausschnitt, der dies in jQuery oder reinem JavaScript macht?

15 Stimmen

Benchmarks einiger der vorgeschlagenen Antworten in diesem Thread. jsperf.com/ms-to-hh-mm-ss-time-format

0 Stimmen

0voto

Rakesh Punkte 45
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);

    if(hours >= 12)
    {
     var m= 'pm' ;
     }
     else
     {
         var m='am'
     }
     if(hours-12 >0)
     {
            var hrs = hours-12;
     }
     else if(hours-12 <0)
     {
            var hrs = hours;
     }
    var obj = {
        "h": hrs,
        "m": minutes,
        "s": seconds,
        "a":m
    };

    return obj;
}
var d = new Date();
var n = d.getHours();
var hms = d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();   // your input string
var a = hms.split(':'); // split it at the colons

// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 

console.log(seconds);
console.log(secondsToTime(seconds))

https://jsfiddle.net/jithinksoft/9x6z4sdt/

0voto

Rodrigo Polo Punkte 3807

Millisekunden zu Dauer, auf einfache Weise:

// Um führende Nullen in Strings zu haben.
function pad(num, size) {
    var s = num + "";
    while (s.length < size) s = "0" + s;
    return s;
}

// ms zu Zeit/Dauer
msToDuration = function(ms){
    var seconds = ms / 1000;
    var hh = Math.floor(seconds / 3600),
    mm = Math.floor(seconds / 60) % 60,
    ss = Math.floor(seconds) % 60,
    mss = ms % 1000;
    return pad(hh,2)+':'+pad(mm,2)+':'+pad(ss,2)+'.'+pad(mss,3);
}

Es konvertiert 327577 zu 00:05:27.577.

AKTUALISIERUNG

Ein anderer Weg für unterschiedliche Szenarien:

toHHMMSS = function (n) {
    var sep = ':',
        n = parseFloat(n),
        sss = parseInt((n % 1)*1000),
        hh = parseInt(n / 3600);
    n %= 3600;
    var mm = parseInt(n / 60),
        ss = parseInt(n % 60);
    return pad(hh,2)+sep+pad(mm,2)+sep+pad(ss,2)+'.'+pad(sss,3);
    function pad(num, size) {
        var str = num + "";
        while (str.length < size) str = "0" + str;
        return str;
    }
}

toHHMMSS(6315.077) // Gibt 01:45:15.077 zurück

0voto

Sie können Momement.js mit dem Plugin moment-duration-format verwenden:

var seconds = 3820;
var duration = moment.duration(seconds, 'seconds');
var formatted = duration.format("hh:mm:ss");
console.log(formatted); // 01:03:40

Siehe auch dieses Beispiel

0 Stimmen

Funktioniert wie ein Zauber (außer dem Format, das nicht definiert ist), um eine Dauer in ein Objekt mit Monaten, Tagen, Stunden, Minuten und Sekunden umzuwandeln

0voto

Ich würde Artems Antwort upvoten, aber ich bin ein neuer Poster. Ich habe jedoch seine Lösung erweitert, obwohl es nicht das ist, was der OP gefragt hat, wie folgt

    t=(new Date()).toString().split(" ");
    timestring = (t[2]+t[1]+' '+t[4]+' '+t[6][1]+t[7][0]+t[8][0]);

Um zu erhalten

04Oct 16:31:28 PDT

Dies funktioniert für mich...

Aber wenn Sie nur mit einer Zeitmenge beginnen, verwende ich zwei Funktionen; eine zum Formatieren und Auffüllen und eine zum Berechnen:

function sec2hms(timect){

  if(timect=== undefined||timect==0||timect === null){return ''};
  //timect sind Sekunden, NICHT Millisekunden
  var se=timect % 60; //der Rest nach der Division durch 60
  timect = Math.floor(timect/60);
  var mi=timect % 60; //der Rest nach der Division durch 60
  timect = Math.floor(timect/60);
  var hr = timect % 24; //der Rest nach der Division durch 24
  var dy = Math.floor(timect/24);
  return padify (se, mi, hr, dy);
}

function padify (se, mi, hr, dy){
  hr = hr<10?"0"+hr:hr;
  mi = mi<10?"0"+mi:mi;
  se = se<10?"0"+se:se;
  dy = dy>0?dy+"d ":"";
  return dy+hr+":"+mi+":"+se;
}

0voto

phpFreak Punkte 133
            //secondsToTime();
            var t = wachttijd_sec; // deine Sekunden
            var stunde = Math.floor(t/3600);
            if(stunde < 10){
                stunde = '0'+ stunde;
            }
            var zeit = stunde+':'+('0'+Math.floor(t/60)%60).slice(-2)+':'+('0' + t % 60).slice(-2);
            //würde ausgeben: 00:00:00 > +100:00:00

zählt weiterhin herunter, auch wenn mehr als 24 Stunden vergehen

1 Stimmen

Liebenswürdig von Ihnen. Bieten wirklich nichts Substantielles, was nicht bereits in einer oder mehreren der 30 Antworten gegeben wurde.

0 Stimmen

Tatsächlich, nur ein Versuch zu helfen, es einfach zu halten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X