Для значения DATE
со временем, в котором вы использовали бы тип JDBC java.sql.Date
, используйте java.time.LocalDate
.Существуют методы, помогающие преобразовать:
LocalDate localDate = sqlDate.toLocalDate();
Date sqlDate = Date.valueOf(localDate);
Для значения TIMESTAMP
/ DATETIME
, когда вы использовали бы тип JDBC java.sql.Timestamp
, это зависит от того,вам нужно учитывать часовой пояс.
Если приложение, его пользователи и база данных находятся в одном часовом поясе, вы можете использовать java.time.LocalDateTime
.Существуют методы, помогающие преобразовать:
LocalDateTime localDateTime = timestamp.toLocalDateTime();
Timestamp timestamp = Timestamp.valueOf(localDateTime);
Если пользователи находятся в нескольких часовых поясах, вы всегда должны сохранять значения в базе данных в формате UTC, поэтому вы должны использовать java.time.Instant
.Существуют методы, помогающие преобразовать:
Instant instant = timestamp.toInstant();
Timestamp timestamp = Timestamp.from(instant);
Затем вы можете преобразовать в локальный часовой пояс пользователя для отображения, например:
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("America/New_York"));
LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();