import java.time.Duration;
import java.time.LocalDateTime;
import java.time.Month;
public class Main {
public static void main
(String[] args
) { LocalDateTime startDateTime = LocalDateTime.of(2020, Month.NOVEMBER, 10, 15, 20, 25);
LocalDateTime endDateTime = LocalDateTime.of(2020, Month.DECEMBER, 10, 18, 24, 30);
Duration duration = Duration.between(startDateTime, endDateTime);
// Default format
// Custom format
// ####################################Java-8####################################
String formattedElapsedTime
= String.
format("%d days %d hour(s) %d minute(s) %d second(s)", duration.
toDays(), duration.
toHours() % 24,
duration.toMinutes() % 60, duration.toSeconds() % 60);
System.
out.
println(formattedElapsedTime
); // ##############################################################################
// ####################################Java-9####################################
formattedElapsedTime
= String.
format("%d days %d hour(s) %d minute(s) %d second(s)", duration.
toDaysPart(), duration.
toHoursPart(),
duration.toMinutesPart(), duration.toSecondsPart());
System.
out.
println(formattedElapsedTime
); // ##############################################################################
}
}
aW1wb3J0IGphdmEudGltZS5EdXJhdGlvbjsKaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVUaW1lOwppbXBvcnQgamF2YS50aW1lLk1vbnRoOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIExvY2FsRGF0ZVRpbWUgc3RhcnREYXRlVGltZSA9IExvY2FsRGF0ZVRpbWUub2YoMjAyMCwgTW9udGguTk9WRU1CRVIsIDEwLCAxNSwgMjAsIDI1KTsKICAgICAgICBMb2NhbERhdGVUaW1lIGVuZERhdGVUaW1lID0gTG9jYWxEYXRlVGltZS5vZigyMDIwLCBNb250aC5ERUNFTUJFUiwgMTAsIDE4LCAyNCwgMzApOwoKICAgICAgICBEdXJhdGlvbiBkdXJhdGlvbiA9IER1cmF0aW9uLmJldHdlZW4oc3RhcnREYXRlVGltZSwgZW5kRGF0ZVRpbWUpOwogICAgICAgIC8vIERlZmF1bHQgZm9ybWF0CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGR1cmF0aW9uKTsKCiAgICAgICAgLy8gQ3VzdG9tIGZvcm1hdAogICAgICAgIC8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI0phdmEtOCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIFN0cmluZyBmb3JtYXR0ZWRFbGFwc2VkVGltZSA9IFN0cmluZy5mb3JtYXQoIiVkIGRheXMgJWQgaG91cihzKSAlZCBtaW51dGUocykgJWQgc2Vjb25kKHMpIiwgZHVyYXRpb24udG9EYXlzKCksIGR1cmF0aW9uLnRvSG91cnMoKSAlIDI0LAogICAgICAgICAgICAgICAgZHVyYXRpb24udG9NaW51dGVzKCkgJSA2MCwgZHVyYXRpb24udG9TZWNvbmRzKCkgJSA2MCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGZvcm1hdHRlZEVsYXBzZWRUaW1lKTsKICAgICAgICAvLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjSmF2YS05IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgZm9ybWF0dGVkRWxhcHNlZFRpbWUgPSBTdHJpbmcuZm9ybWF0KCIlZCBkYXlzICVkIGhvdXIocykgJWQgbWludXRlKHMpICVkIHNlY29uZChzKSIsIGR1cmF0aW9uLnRvRGF5c1BhcnQoKSwgZHVyYXRpb24udG9Ib3Vyc1BhcnQoKSwKICAgICAgICAgICAgICAgIGR1cmF0aW9uLnRvTWludXRlc1BhcnQoKSwgZHVyYXRpb24udG9TZWNvbmRzUGFydCgpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZm9ybWF0dGVkRWxhcHNlZFRpbWUpOwogICAgICAgIC8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgfQp9