SQLite не использует «типы» и вместо этого использует так называемое «сходство типов»;
Из самой документации :
Важная идеяздесь этот тип рекомендуется, а не обязателен
Вы можете хранить даты в виде строк и анализировать их по своему усмотрению с помощью классов форматирования, таких как SimpleDateFormat
или DateTimeFormatter
, или вы можете использовать что-то грубоекак Date.from(Instant.parse(rs.getString("date")))
.
Java 8
Среди других ответов здесь я бы сказал, что LocalDate#parse()
и LocalDateTime#parse()
также является хорошим вариантом для продвижения вперед в Java 8.
Они принимают дату в строковом формате
LocalDate.parse("2016-05-24")
или строку со значением DateTimeFormatter в качестве второго аргумента
LocalDate.parse("2016-05-24", DateTimeFormatter.ofPattern(yyyy-MM-dd))
Преобразование
И если вы хотите использовать LocalDate
или LocalDateTime
, но хотите поддержать Date
, возможно, в шаблоне адаптера ;
LocalDateTime to Date:
В этом примере системный часовой пояс по умолчанию используется в качестве аргумента ZoneId atZone, однакоВы можете использовать статический / жестко закодированный часовой пояс, если хотите.По сути, вы создаете Instant из AtZone, который можно использовать для построения Date из статического метода Date#from(Instant)
Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
LocalDate To Date:
Этот пример почти такой же,только здесь все, что требуется для получения ZoneId для создания Instant, - это сам экземпляр LocalDate
.
Date.from(localDate.atZone(ZoneId.systemDefault()).toInstant()));
Я не вдавался в технические подробности здесь, это может даже не бытьнеобходимо, но поправьте меня, если я ошибаюсь.