Wie konvertiert Millisekunden um "hh:mm:ss" - format?
Ich bin verwirrt. Nach stolpern auf diese thread habe ich versucht, herauszufinden, wie zu formatieren, countdown-timer, der das format hh:mm:ss
.
Hier ist mein Versuch -
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
So, wenn ich versuche einen Wert wie 3600000ms
bekomme ich 01:59:00
das ist falsch, denn es sollte 01:00:00
. Offensichtlich gibt es etwas falsch mit meiner Logik, aber im moment, ich kann nicht sehen, was es ist!
Kann jemand helfen?
Bearbeiten -
Behoben. Hier ist der richtige Weg, um format Millisekunden hh:mm:ss
format -
//hh:mm:ss
String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
War das problem dieser TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
. Es hätte diese TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
statt.
InformationsquelleAutor der Frage mre | 2012-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Waren Sie wirklich schließen:
Waren Sie konvertieren Stunden millisseconds mit Minuten statt Stunden.
BTW, ich mag Ihre Nutzung der
TimeUnit
API 🙂Hier ist etwas test-code:
Ausgabe:
Merkte ich, dass mein code oben kann stark vereinfacht werden, indem eine modulo-division statt Subtraktion:
Immer noch mit der
TimeUnit
API für alle Magie-Werte, und gibt exakt die gleiche Ausgabe.InformationsquelleAutor der Antwort Bohemian
Die generische Methode dafür ist Recht einfach:
InformationsquelleAutor der Antwort Arets Paeglis
Wenn Sie mithilfe von apache commons:
InformationsquelleAutor der Antwort Triton Man
Sehen runnable Beispiel mit Eingabe von 1200 ms.
InformationsquelleAutor der Antwort Vinay Lodha
Habe ich dieses:
Siehe Beschreibung der Klasse Formatter.
Sehen runnable Beispiel mit Eingabe von 2400 ms.
InformationsquelleAutor der Antwort ZuluM
InformationsquelleAutor der Antwort Gabriel Belingueres
Test-Ergebnisse für die 4-Implementierungen
Dass eine Menge tun, um die Formatierung für große Daten, die benötigt werden, die beste Leistung, also hier sind die (überraschenden) Ergebnisse:
for (int i = 0; i < 1000000; i++) {
FUNCTION_CALL
}
Dauer:
formatTimeUnit: 2216 millis
InformationsquelleAutor der Antwort MariusA
Den code unten führt die Konvertierung in beide Wege
23:59:58:999, 86398999
und als
86398999 um 23:59:58:999
InformationsquelleAutor der Antwort Menzio Luca Fabrizio
Gehen durch den böhmischen Antwort, die wir brauchen, müssen nicht verwenden, TimeUnit zu finden, die einen bekannten Wert.
Viel mehr optimalen code wäre
Hoffe es hilft
InformationsquelleAutor der Antwort Aalin
Format: 00:00:00.000
Beispiel: 615605 Millisecend
00:10:15.605
InformationsquelleAutor der Antwort Omid Naji
InformationsquelleAutor der Antwort ctu
Habe ich versucht wie in der ersten Antwort. Es funktioniert, aber minus brachte mich in Verwirrung. Meine Antwort, indem Sie Groovy:
InformationsquelleAutor der Antwort leonov
Gut, Sie könnten versuchen, so etwas wie dies :
konvertieren von Millisekunden zu einer Zeit, Wert
InformationsquelleAutor der Antwort anonymous
Die markierte als richtige Antwort hat einen kleinen Fehler gemacht,
zum Beispiel dies ist ein Beispiel für den Wert, den ich bekomme:
Dies ist die Lösung, um das richtige format ist:
immer als Ergebnis einer richtigen format:
andere option, um das format
hh:mm:ss
ist nur :InformationsquelleAutor der Antwort Jorgesys
Java 9
Diese Drucke:
Sie tun, gerade in der Vermietung-Bibliothek Methoden der conversions beteiligt, für Sie.
java.time
der modernen Java-Datums-und Zeit-API, oder genauer gesagt, seineDuration
Klasse macht es mehr elegant und weniger fehleranfällige Weg, alsTimeUnit
.Den
toMinutesPart
undtoSecondsPart
Methoden, die ich verwendet wurden, eingeführt in Java 9.Java 6, 7 und 8
Die Ausgabe ist die gleiche wie oben.
Frage: Wie kann das funktionieren in Java 6 und 7?
java.time
kommt built-in.org.threeten.bp
mit Unterpakete.Links
java.time
.java.time
erstmals beschrieben wurde.java.time
zu Java 6 und 7 (ThreeTen für JSR-310).InformationsquelleAutor der Antwort Ole V.V.
Für Kotlin
wo
milSecs
ist in MillisekundenInformationsquelleAutor der Antwort KishanSolanki124