J'ai essayé de convertir une valeur de secondes (dans une variable BigDecimal) en une chaîne dans un editText comme "1 heure 22 minutes 33 secondes" ou quelque chose du genre.
J'ai essayé ceci:
String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");
(J'ai un roundThreeCalc qui est la valeur en secondes donc j'essaye de le convertir ici.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Ensuite, j'ai défini editText sur sequnceCaptureTime String. Mais cela n'a pas fonctionné. Cela force la fermeture de l'application à chaque fois. Je suis totalement hors de ma portée ici, toute aide est grandement appréciée. Bon codage!
Réponses:
Tu devrais avoir plus de chance avec
Cela supprimera les valeurs décimales après chaque division.
Edit: Si cela ne fonctionne pas, essayez ceci. (Je viens de l'écrire et de le tester)
la source
DateUtils.formatElapsedTime
...Est-il nécessaire d'utiliser un BigDecimal? Si vous n'êtes pas obligé, j'utiliserais un int ou long pendant secondes, et cela simplifierait un peu les choses:
Vous voudrez peut-être remplir chacun pour vous assurer qu'il s'agit de valeurs à deux chiffres (ou autre) dans la chaîne, cependant.
la source
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, met en forme un temps écoulé sous la forme "MM:SS
" ou "H:MM:SS
". Il renvoie la chaîne que vous recherchez. Vous pouvez trouver la documentation icila source
Voici le code de travail:
la source
DateUtils.formatElapsedTime
...Quelque chose de vraiment utile dans Java 8
la source
Je préfère la bibliothèque TimeUnit intégrée de Java
la source
la source
Voici ma solution simple:
Test Results
:la source
J'aime garder les choses simples donc:
Le résultat sera: 01 heure 23 minutes 20 secondes
la source
Si vous voulez les unités
h
,min
etsec
pour une durée, vous pouvez utiliser ceci:C'est beaucoup d'opérateurs conditionnels. La méthode retournera ces chaînes:
la source
Ce code fonctionne bien:
la source
Un moyen simple et agréable de le faire en utilisant GregorianCalendar
Importez-les dans le projet:
Puis:
la source
J'utilise ceci:
la source
Voici ma fonction pour résoudre le problème:
la source
Je sais que c'est assez vieux mais en java 8:
la source
pendant quelques minutes et secondes utilisez ceci
la source
J'utilise ceci en python pour convertir un flottant représentant des secondes en heures, minutes, secondes et microsecondes. C'est raisonnablement élégant et pratique pour la conversion en un type datetime via strptime pour convertir. Il pourrait également être facilement étendu à des intervalles plus longs (semaines, mois, etc.) si nécessaire.
la source
J'ai essayé le meilleur moyen et moins de code, mais c'est peut-être un peu difficile de comprendre comment j'ai écrit mon code, mais si vous êtes bon en maths, c'est si facile
heures de cours {
}
en plus c'est précis!
la source
Avec Java 8, vous pouvez facilement atteindre le temps au format String à partir de longues secondes comme,
Ici, la valeur donnée est maximale autorisée à convertir (jusqu'à 24 heures) et le résultat sera
Avantages: 1) Pas besoin de convertir manuellement et d'ajouter 0 pour un seul chiffre
Inconvénients: ne travaillez que pendant 24 heures maximum
la source
Avec Java 8, vous pouvez facilement atteindre le temps au format LocalTime à partir de longues secondes comme,
Ici, la valeur donnée est maximale autorisée à convertir (jusqu'à 24 heures) et le résultat sera
Avantages: 1) Pas besoin de convertir manuellement et d'ajouter 0 pour un seul chiffre
Inconvénients: ne travaillez que pendant 24 heures maximum
la source
Durée depuis java.time
La sortie de cet extrait de code est:
S'il y avait eu une fraction de seconde non nulle dans le
BigDecimal
code, ce code n'aurait pas fonctionné tel quel, mais vous pourrez peut-être le modifier. Le code fonctionne dans Java 9 et versions ultérieures. Dans Java 8, la conversionDuration
en heures, minutes et secondes est un peu plus verbeuse, voir le lien en bas pour savoir comment. Je vous laisse choisir la bonne forme singulière ou plurielle des mots ( heure ou heures , etc.).Liens
Duration
en jours, heures, minutes et secondes dans Java 8.la source