java.time
Вы используете ужасно хлопотные старые классы даты и времени (Date
, Calendar
) из самых ранних версий Java.Эти классы теперь унаследованы, их несколько лет назад вытеснили java.time классы.
Я не пользователь Джексона, поэтому я не знаю, добавила ли Джексон встроенную поддержку для java.time пока.Но я думаю, что это вероятно.
Если нет, похоже, вы можете добавить модуль поддержки Джексона для этой цели.См. эту статью , этот вопрос , и этот сайт GitHub .
java.time классы используют наносекундное разрешение,Это означает до девяти (9) десятичных цифр доли секунды.Этого более чем достаточно для 6 цифр в ваших входах.
Зональный или незонированный
У вас есть другая проблема, другой природы.Вы берете данные для даты и времени, в которых отсутствует какая-либо концепция часового пояса или смещения от UTC.Затем вы сохраняете его в другой тип , тип с часовым поясом.Нехорошо.Вы ввели значение, где никто не был заслужен.Это все равно, что взять общее число, предполагаемое в качестве цены, и затем произвольно применить определенную валюту, не указанную во входных данных.
Вы должны анализировать входные данные, такие как 2018-06-25T13:50:53.984771
как LocalDateTime
.У этого типа намеренно отсутствует какой-либо часовой пояс или смещение от UTC, например, ваш ввод.Этот тип не представляет определенный момент, является не точкой на временной шкале, поскольку он не имеет реального значения, пока вы не примените контекст зоны / смещения.
Для получения дополнительной информации выполните поиск переполнения стека для LocalDateTime
, ZonedDateTime
, OffsetDateTime
и Instant
.В частности, для некоторых моих ответов, ищите "Санта".
О java.time
java.time *Платформа 1052 * встроена в Java 8 и более поздние версии.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .