Dies ist in Java 9 einfacher:
Duration elapsedTime = Duration.ofMillis(millisDiff );
String humanReadableElapsedTime = String.format(
"%d hours, %d mins, %d seconds",
elapsedTime.toHours(),
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
Dies erzeugt eine Zeichenfolge wie 0 hours, 39 mins, 9 seconds
.
Wenn Sie vor dem Formatieren auf ganze Sekunden runden möchten:
elapsedTime = elapsedTime.plusMillis(500).truncatedTo(ChronoUnit.SECONDS);
So lassen Sie die Stunden weg, 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, um sie immer zweistellig zu machen, fügen Sie einfach 02
in die entsprechenden Formatspezifizierer ein, also:
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
.