Подтвердить что ты не робот

Преобразование между LocalDate и sql.Date

Каков правильный способ преобразования между java.sql.Date и LocalDate (Java8)?

4b9b3361

Ответ 1

Версия Java 8 (и позже) java.sql.Date построила поддержку LocalDate, включая toLocalDate и valueOf(LocalDate).

Для преобразования из LocalDate в java.sql.Date вы можете использовать

java.sql.Date.valueOf( localDate );

И для преобразования из java.sql.Date в LocalDate:

sqlDate.toLocalDate();

Часовой пояс:

Тип LocalDate не хранит информацию о часовом поясе, а java.sql.Date. Поэтому при использовании указанных выше преобразований результаты зависят от часовой пояс системы по умолчанию (как указано в комментариях).

Если вы не хотите полагаться на часовой пояс по умолчанию, вы можете использовать следующее преобразование:

Date now = new Date();
LocalDate current = now.toInstant()
                       .atZone(ZoneId.systemDefault()) // Specify the correct timezone
                       .toLocalDate();