J'ai besoin de convertir une quantité arbitraire de millisecondes en Jours, Heures, Minutes, Seconde.
Par exemple: 10 Jours, 5 heures, 13 minutes, 1 seconde.
J'ai besoin de convertir une quantité arbitraire de millisecondes en Jours, Heures, Minutes, Seconde.
Par exemple: 10 Jours, 5 heures, 13 minutes, 1 seconde.
Eh bien, puisque personne d'autre n'a intensifié, je vais écrire le code facile à faire:
x = ms / 1000
seconds = x % 60
x /= 60
minutes = x % 60
x /= 60
hours = x % 24
x /= 24
days = x
Je suis simplement heureux que vous avez arrêté à jours et n'a pas demandé pendant des mois. :)
Notez que dans ce qui précède, il est supposé que l' /
représente tronquer division entière. Si vous utilisez ce code dans un langage où l' /
représente floating point de la division, vous devrez manuellement tronquer les résultats de la division en tant que de besoin.
Les bibliothèques sont utiles, mais pourquoi utiliser une bibliothèque lorsque vous pouvez ré-inventer la roue! :)
function getDuration(timeMillis){
var units = [
{label:"millis", mod:1000,},
{label:"seconds", mod:60,},
{label:"minutes", mod:60,},
{label:"hours", mod:24,},
{label:"days", mod:7,},
{label:"weeks", mod:52,},
];
var duration = new Object();
var x = timeMillis;
for (i = 0; i < units.length; i++){
var tmp = x % units[i].mod;
duration[units[i].label] = tmp;
x = (x - tmp) / units[i].mod
}
return duration;
}
Crée une "durée" de l'objet, avec tout ce que les champs dont vous avez besoin. Mise en forme d'un timestamp puis devient simple...
var duration = getDuration(4773904321); // example time in millis
var str = "";
str += duration.weeks + " weeks, ";
str += duration.days + " days, ";
str += duration.hours + " hours, ";
str += duration.minutes + " mins, ";
str += duration.seconds + " secs, ";
str += duration.millis + " millis";
return str;
Vous donne...
"7 weeks, 6 days, 6 hours, 5 mins, 4 secs, 321 millis"
Apache Commons Lang a une DurationFormatUtils qui a des méthodes très utiles comme formatDurationWords.
Vous devez utiliser les fonctions date et heure de la langue que vous utilisez, mais, juste pour le plaisir voici le code:
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;
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.