125 Stimmen

Wie kann man Millisekunden in eine für Menschen lesbare Form umwandeln?

Ich muss eine beliebige Anzahl von Millisekunden in Tage, Stunden, Minuten und Sekunden umrechnen.

Zum Beispiel: 10 Tage, 5 Stunden, 13 Minuten, 1 Sekunde.

4voto

iTurki Punkte 16014

Dies ist eine Methode, die ich geschrieben habe. Sie nimmt eine integer milliseconds value und gibt eine human-readable String :

public String convertMS(int ms) {
    int seconds = (int) ((ms / 1000) % 60);
    int minutes = (int) (((ms / 1000) / 60) % 60);
    int hours = (int) ((((ms / 1000) / 60) / 60) % 24);

    String sec, min, hrs;
    if(seconds<10)  sec="0"+seconds;
    else            sec= ""+seconds;
    if(minutes<10)  min="0"+minutes;
    else            min= ""+minutes;
    if(hours<10)    hrs="0"+hours;
    else            hrs= ""+hours;

    if(hours == 0)  return min+":"+sec;
    else    return hrs+":"+min+":"+sec;

}

4voto

Camilo Silva Punkte 7600

In java

public static String formatMs(long millis) {
    long hours = TimeUnit.MILLISECONDS.toHours(millis);
    long mins = TimeUnit.MILLISECONDS.toMinutes(millis);
    long secs = TimeUnit.MILLISECONDS.toSeconds(millis);
    return String.format("%dh %d min, %d sec",
            hours,
            mins - TimeUnit.HOURS.toMinutes(hours),
            secs - TimeUnit.MINUTES.toSeconds(mins)
    );
}

Ergibt in etwa folgendes:

12h 1 min, 34 sec

4voto

Rajiv Punkte 2312
function convertTime(time) {        
    var millis= time % 1000;
    time = parseInt(time/1000);
    var seconds = time % 60;
    time = parseInt(time/60);
    var minutes = time % 60;
    time = parseInt(time/60);
    var hours = time % 24;
    var out = "";
    if(hours && hours > 0) out += hours + " " + ((hours == 1)?"hr":"hrs") + " ";
    if(minutes && minutes > 0) out += minutes + " " + ((minutes == 1)?"min":"mins") + " ";
    if(seconds && seconds > 0) out += seconds + " " + ((seconds == 1)?"sec":"secs") + " ";
    if(millis&& millis> 0) out += millis+ " " + ((millis== 1)?"msec":"msecs") + " ";
    return out.trim();
}

2voto

theraccoonbear Punkte 4157

Ich würde vorschlagen, was Datum/Zeit-Funktionen/Bibliotheken Ihrer Sprache/Framework der Wahl bietet. Schauen Sie sich auch String-Formatierungsfunktionen an, da sie oft einfache Möglichkeiten bieten, Datums-/Zeitstempel zu übergeben und ein menschenlesbares String-Format auszugeben.

2voto

Pavel Blagodov Punkte 564

Warum macht man so etwas nicht einfach?

var ms = 86400;

var Sekunden = ms / 1000; //86,4

var Minuten = Sekunden / 60; //1.4400000000000002

var Stunden = Minuten / 60; //0.0240000000000000000004

var Tage = Stunden / 24; //0.0010000000000000002

Und der Umgang mit Float-Präzision z.B. Number(minutes.toFixed(5)) //1.44

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