In Java 9 ist dies einfacher:
Duration elapsedTime = Duration.ofMillis(millisDiff );
String humanReadableElapsedTime = String.format(
"%d hours, %d mins, %d seconds",
elapsedTime.toHours(),
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
Dies ergibt eine Zeichenkette wie 0 hours, 39 mins, 9 seconds
.
Wenn Sie vor der Formatierung auf ganze Sekunden aufrunden möchten:
elapsedTime = elapsedTime.plusMillis(500).truncatedTo(ChronoUnit.SECONDS);
Die Stunden weglassen, wenn sie 0 sind:
long hours = elapsedTime.toHours();
String humanReadableElapsedTime;
if (hours == 0) {
humanReadableElapsedTime = String.format(
"%d mins, %d seconds",
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
} else {
humanReadableElapsedTime = String.format(
"%d hours, %d mins, %d seconds",
hours,
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
}
Jetzt können wir zum Beispiel haben 39 mins, 9 seconds
.
Um Minuten und Sekunden mit führender Null zu drucken, damit sie immer zweistellig sind, fügen Sie einfach ein 02
in die entsprechenden Formatspezifikationen ein:
String humanReadableElapsedTime = String.format(
"%d hours, %02d mins, %02d seconds",
elapsedTime.toHours(),
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
Jetzt können wir zum Beispiel haben 0 hours, 39 mins, 09 seconds
.