Ich muss eine beliebige Anzahl von Millisekunden in Tage, Stunden, Minuten und Sekunden umrechnen.
Zum Beispiel: 10 Tage, 5 Stunden, 13 Minuten, 1 Sekunde.
Ich muss eine beliebige Anzahl von Millisekunden in Tage, Stunden, Minuten und Sekunden umrechnen.
Zum Beispiel: 10 Tage, 5 Stunden, 13 Minuten, 1 Sekunde.
Nun, da sich niemand sonst gemeldet hat, werde ich den einfachen Code dafür schreiben:
x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24
x /= 24
days = x
Ich bin nur froh, dass du bei Tagen stehen geblieben bist und nicht nach Monaten gefragt hast :)
In den obigen Ausführungen wird davon ausgegangen, dass /
steht für abbrechende Ganzzahldivision. Wenn Sie diesen Code in einer Sprache verwenden, in der /
eine Gleitkommadivision darstellt, müssen Sie die Ergebnisse der Division bei Bedarf manuell abschneiden.
Beide nachstehenden Lösungen verwenden javascript (Ich hatte keine Ahnung, dass die Lösung sprachunabhängig ist!) Beide Lösungen müssen erweitert werden, wenn die Dauer der Erfassung > 1 month
.
var date = new Date(536643021);
var str = '';
str += date.getUTCDate()-1 + " days, ";
str += date.getUTCHours() + " hours, ";
str += date.getUTCMinutes() + " minutes, ";
str += date.getUTCSeconds() + " seconds, ";
str += date.getUTCMilliseconds() + " millis";
console.log(str);
Gibt:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"
Bibliotheken sind hilfreich, aber warum eine Bibliothek benutzen, wenn man das Rad neu erfinden kann! :)
var getDuration = function(millis){
var dur = {};
var units = [
{label:"millis", mod:1000},
{label:"seconds", mod:60},
{label:"minutes", mod:60},
{label:"hours", mod:24},
{label:"days", mod:31}
];
// calculate the individual unit values...
units.forEach(function(u){
millis = (millis - (dur[u.label] = (millis % u.mod))) / u.mod;
});
// convert object to a string representation...
var nonZero = function(u){ return dur[u.label]; };
dur.toString = function(){
return units
.reverse()
.filter(nonZero)
.map(function(u){
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
})
.join(', ');
};
return dur;
};
Erstellt ein "duration"-Objekt mit den von Ihnen gewünschten Feldern. Die Formatierung eines Zeitstempels wird dann einfach...
console.log(getDuration(536643021).toString());
Gibt:
"6 days, 5 hours, 4 minutes, 3 seconds, 21 millis"
Apache Commons Lang hat eine DurationFormatUtils die sehr hilfreiche Methoden enthält wie formatDurationWords .
Sie sollten die datetime-Funktionen der von Ihnen verwendeten Sprache verwenden, aber hier ist der Code nur zum Spaß:
int milliseconds = someNumber;
int seconds = milliseconds / 1000;
int minutes = seconds / 60;
seconds %= 60;
int hours = minutes / 60;
minutes %= 60;
int days = hours / 24;
hours %= 24;
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.