Điều này dễ dàng hơn trong Java 9:
Duration elapsedTime = Duration.ofMillis(millisDiff );
String humanReadableElapsedTime = String.format(
"%d hours, %d mins, %d seconds",
elapsedTime.toHours(),
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
Điều này tạo ra một chuỗi như 0 hours, 39 mins, 9 seconds
.
Nếu bạn muốn làm tròn đến toàn bộ giây trước khi định dạng:
elapsedTime = elapsedTime.plusMillis(500).truncatedTo(ChronoUnit.SECONDS);
Để lại giờ nếu họ là 0:
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());
}
Bây giờ chúng ta có thể có ví dụ 39 mins, 9 seconds
.
Để in phút và giây với số 0 đứng đầu để làm cho chúng luôn có hai chữ số, chỉ cần chèn 02
vào các chỉ định định dạng có liên quan, do đó:
String humanReadableElapsedTime = String.format(
"%d hours, %02d mins, %02d seconds",
elapsedTime.toHours(),
elapsedTime.toMinutesPart(),
elapsedTime.toSecondsPart());
Bây giờ chúng ta có thể có ví dụ 0 hours, 39 mins, 09 seconds
.