tl; dr
myPreparedStatement.setObject( // As of JDBC 4.2, pass java.time objects to your database.
… ,
LocalDate // Represent a date-only value, without time-of-day and without time zone.
.parse( // Convert text to a `LocalDate` object.
"23/01/2018" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) // Specify formatting pattern to match user input.
) // Returns a `LocalDate` object.
)
java.time
Использовать только java.time классы.Никогда не используйте java.util.Date
, java.sql.Date
, Calendar
, SimpleDateFormat
и т. Д.
String input = "23/01/2018" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;
Начиная с JDBC 4.2, мы можем напрямую обмениваться java.time объектами сбаза данных.
myPreparedStatement.setObject( … , ld ) ;
Извлечение.
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
О java.time
Java.time Framework встроен в 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 .