Как конвертировать LocalDate или LocalDateTime в Calendar?

111
30 ноября 2019, 11:50

Есть ли простой способ получить из объектов класса LocalDate или LocalDateTime объект класса Calendar?

Answer 1

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.

READ ALSO
Где можно практиковать JavaEE [закрыт]

Где можно практиковать JavaEE [закрыт]

Начал изучать JavaEE, но не знаю, где можно попрактиковать навыкиМб вы знаете где можно посмотреть готовые проекты JavaEE или не готовые, что бы самому...

107
Не читает подкаталог с файлами [закрыт]

Не читает подкаталог с файлами [закрыт]

Файлы с главного каталога считывает а с подкаталога нет в чем может быть проблема?

104
Java Server Page || Приоритет по файлам?

Java Server Page || Приоритет по файлам?

Когда запускаю JSP Web Application на Tomcat или JBoss Server, оно запускает indexjsp первым (index

120
Как создать всплывающее окно

Как создать всплывающее окно

Как создать всплывающее окно в Android при нажатии на слово? И что бы была возможность добавить кнопки действия

122