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.

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

1voto

Rafal Pastuszak Punkte 2991

Ich bin nicht in der Lage, die erste Antwort auf Ihre Frage zu kommentieren, aber es gibt einen kleinen Fehler. Sie sollten parseInt oder Math.floor verwenden, um Fließkommazahlen in Ganzzahlen zu konvertieren, i

var days, hours, minutes, seconds, x;
x = ms / 1000;
seconds = Math.floor(x % 60);
x /= 60;
minutes = Math.floor(x % 60);
x /= 60;
hours = Math.floor(x % 24);
x /= 24;
days = Math.floor(x);

Ich persönlich verwende CoffeeScript in meinen Projekten und mein Code sieht so aus:

getFormattedTime : (ms)->
        x = ms / 1000
        seconds = Math.floor x % 60
        x /= 60
        minutes = Math.floor x % 60
        x /= 60
        hours = Math.floor x % 24
        x /= 24
        days = Math.floor x
        formattedTime = "#{seconds}s"
        if minutes then formattedTime = "#{minutes}m " + formattedTime
        if hours then formattedTime = "#{hours}h " + formattedTime
        formattedTime

1voto

keocra Punkte 545

In Python 3 können Sie Ihr Ziel mit folgendem Schnipsel erreichen:

from datetime import timedelta

ms = 536643021
td = timedelta(milliseconds=ms)

print(str(td))
# --> 6 days, 5:04:03.021000

Timedelta-Dokumentation: https://docs.python.org/3/library/datetime.html#datetime.timedelta

Quelle der Methode __str__ von timedelta str: https://github.com/python/cpython/blob/33922cb0aa0c81ebff91ab4e938a58dfec2acf19/Lib/datetime.py#L607

1voto

Vishal Makasana Punkte 880

Ich empfehle die Verwendung von http://www.ocpsoft.org/prettytime/ Bibliothek.

ist es sehr einfach, das Zeitintervall in einer für den Menschen lesbaren Form zu erhalten wie

PrettyTime p = new PrettyTime(); System.out.println(p.format(new Date()));

wird es wie "Augenblicke von jetzt" gedruckt

anderes Beispiel

PrettyTime p = new PrettyTime()); Date d = new Date(System.currentTimeMillis()); d.setHours(d.getHours() - 1); String ago = p.format(d);

then string ago = "vor 1 Stunde"

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