Как вычислить остаток между двумя датами, что бы их можно было выводить в таком формате:
Ivanov Ivan (Java Developer) - Обучение не закончено. До окончания осталось 1 д 6 ч.
Petrov Petr (J2EE Developer) - Обучение закончено. После окончания прошло 3 ч. 3
Мне только интересно вот эти данные "1д. 6ч." и "3ч."
Используйте Duration:
В Java 8 есть только методы toDays/Hours/Minutes, число, которое они возвращают - это полное число дней/часов/минут в разнице, т.е. при разнице между датами 36 часов метод toHours вернет вам 36, а вы наверное хотите 12, потому из 36 можно отдельно выделить целые сутки, соответственно нужно делать как-то так:
Duration duration = Duration.between(startLocalDateTime, endLocalDateTime);
long days = duration.toDays();
long hours = duration.toHours() % 24L;
long minutes = duration.toMinutes() % (24L * 60L);
System.out.println((days != 0 ? days + " д. " : "") +
(hours != 0 ? hours + " ч. " : "") +
(minutes != 0 ? minutes + " м. " : ""));
В Java >= 9 появились методы toDaysPart/HoursPart/MinutesPart, в случае разницы в 36 часов toHours вернет вам как раз 12, получится немного проще:
Duration duration = Duration.between(startLocalDateTime, endLocalDateTime);
long days = duration.toDaysPart();
long hours = duration.toHoursPart();
long minutes = duration.toMinutesPart();
System.out.println((days != 0 ? days + " д. " : "") +
(hours != 0 ? hours + " ч. " : "") +
(minutes != 0 ? minutes + " м. " : ""));
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости