Есть ли простой способ получить из объектов класса LocalDate или LocalDateTime объект класса Calendar?
1-й подход:
Получим количество секунд прошедших с начала Unix-эпохи. И на основе этого создадим объект Calendar.
Для LocalDate
long epochSec = localDate.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(epochSec*1000);
Для LocalDateTime
long epochSec = localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(epochSec*1000);
2-й подход:
У объекта Calendar есть метод set, в котором можно задать информацию о времени.
Для LocalDate
Calendar calendar = Calendar.getInstance();
calendar.set(localDate.getYear(), localDate.getMonthValue() - 1, localDate.getDayOfMonth());
Для LocalDateTime
Calendar calendar = Calendar.getInstance();
calendar.set(localDateTime.getYear(), localDateTime.getMonthValue() - 1, localDateTime.getDayOfMonth(), localDateTime.getHour(), localDateTime.getMinute(), localDateTime.getSecond());
Заметьте, что LocalDate и LocalDateTime считают месяцы с 1 в то время, как Calendar считает месяцы с 0. Поэтому при передаче параметров нужно вычитать единицу.
Также в случае с LocalDateTime можно не передавать в метод set последний параметр (секунды) или вообще обойтись тремя параметрами, как в случае с LocalDate.
Продвижение своими сайтами как стратегия роста и независимости