Каков правильный способ преобразования между java.sql.Date
и LocalDate
(Java8)?
Преобразование между LocalDate и sql.Date
Ответ 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();