J'ai besoin de convertir une quantité arbitraire de millisecondes en jours, heures, minutes secondes.
Par exemple: 10 jours, 5 heures, 13 minutes, 1 seconde.
J'ai besoin de convertir une quantité arbitraire de millisecondes en jours, heures, minutes secondes.
Par exemple: 10 jours, 5 heures, 13 minutes, 1 seconde.
Réponses:
Eh bien, puisque personne d'autre n'a intensifié, je vais écrire le code facile pour le faire:
Je suis juste content que vous vous soyez arrêté à des jours et que vous n'ayez pas demandé pendant des mois. :)
Notez que dans ce qui précède, on suppose que cela
/
représente une division entière tronquée. Si vous utilisez ce code dans un langage où/
représente la division en virgule flottante, vous devrez tronquer manuellement les résultats de la division si nécessaire.la source
Soit A le nombre de millisecondes. Ensuite, vous avez:
et ainsi de suite (
%
est l'opérateur de module).J'espère que cela t'aides.
la source
/
fait la division en virgule flottante, vous devez tronquer la valeur. Il est supposé dans d'autres réponses qui/
effectue une division entière.Les deux solutions ci-dessous utilisent javascript (je ne savais pas que la solution était indépendante du langage!). Les deux solutions devront être étendues si les durées de capture
> 1 month
.Solution 1: utilisez l'objet Date
Donne:
Les bibliothèques sont utiles, mais pourquoi utiliser une bibliothèque lorsque vous pouvez réinventer la roue! :)
Solution 2: écrivez votre propre analyseur
Crée un objet «durée», avec les champs dont vous avez besoin. Le formatage d'un horodatage devient alors simple ...
Donne:
la source
return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label);
var nonZero = function(u){ return !u.startsWith("0"); }; // convert object to a string representation... dur.toString = function(){ return units.reverse().map(function(u){ return dur[u.label] + " " + (dur[u.label]==1?u.label.slice(0,-1):u.label); }).filter(nonZero).join(', '); };
Apache Commons Lang a un DurationFormatUtils qui a des méthodes très utiles comme formatDurationWords .
la source
Vous devriez utiliser les fonctions datetime de la langue que vous utilisez, mais, juste pour vous amuser, voici le code:
la source
C'est une méthode que j'ai écrite. Il prend un
integer milliseconds value
et retourne unhuman-readable String
:la source
la source
Je suggérerais d'utiliser les fonctions / bibliothèques de date / heure fournies par votre langue / cadre de choix. Consultez également les fonctions de formatage de chaîne, car elles fournissent souvent des moyens simples de transmettre des dates / horodatages et de générer un format de chaîne lisible par l'homme.
la source
Vos choix sont simples:
la source
la source
Cela devrait imprimer: 0.0: 1: 9
la source
Pourquoi ne pas faire quelque chose comme ça:
var ms = 86400;
var secondes = ms / 1000; //86,4
var minutes = secondes / 60; //1.4400000000000002
var heures = minutes / 60; //0.024000000000000004
var jours = heures / 24; //0.0010000000000000002
Et traitant de la précision flottante, par exemple Number (minutes.toFixed (5)) //1.44
la source
En java
Donne quelque chose comme ça:
la source
Je ne peux pas commenter la première réponse à votre question, mais il y a une petite erreur. Vous devez utiliser parseInt ou Math.floor pour convertir les nombres à virgule flottante en entier, i
Personnellement, j'utilise CoffeeScript dans mes projets et mon code ressemble à ça:
la source
Ceci est une solution. Plus tard, vous pouvez diviser par ":" et prendre les valeurs du tableau
la source
Voici ma solution en utilisant TimeUnit.
MISE À JOUR: Je dois souligner que cela est écrit en groovy, mais Java est presque identique.
la source
Une façon flexible de le faire:
(pas fait pour la date actuelle mais assez bon pour les durées)
NB: vous pouvez également régler l' heure comme paramètre si vous souhaitez contrôler les plages horaires.
comment utiliser (copier un test):
la source
Je suggère d'utiliser http://www.ocpsoft.org/prettytime/ library ..
il est très simple d'obtenir l'intervalle de temps sous une forme lisible par l'homme comme
PrettyTime p = new PrettyTime(); System.out.println(p.format(new Date()));
il s’imprimera comme «à partir de maintenant»
autre exemple
PrettyTime p = new PrettyTime()); Date d = new Date(System.currentTimeMillis()); d.setHours(d.getHours() - 1); String ago = p.format(d);
then string ago = "il y a 1 heure"
la source
Voici une méthode plus précise en JAVA, j'ai implémenté cette logique simple, j'espère que cela vous aidera:
la source