ТЛ; др
java.time.LocalDate
.of(
1900 ,
Month.JANUARY ,
1
) ;
Избегайте устаревших классов даты и времени
Вы используете ужасный старый класс java.sql.Date
, который был плохо спроектирован с ошибочными взломами. Среди его проблем - то, что он делает вид, что представляет значение только для даты, но на самом деле содержит время суток. Он даже держит часовой пояс глубоко внутри, хотя и без геттера или сеттера. Никогда не используйте этот класс. Замененный лет назад классом java.time.LocalDate
.
Проект Joda-Time также вытесняется классами java.time . Проект находится в режиме обслуживания, получая обновления и исправления критических ошибок, но новые функции не работают. Проект рекомендует перейти на классы java.time . Миграция проста, так как они разделяют схожие концепции, оба возглавляемые одним и тем же человеком, Стивеном Коулборном.
java.time.LocalDate
Используйте java.time.LocalDate
, если вы хотите использовать значение только для даты без времени суток и без часового пояса. Все ваши проблемы, поднятые в вашем Вопросе, исчезнут.
java.time.LocalDate ld = LocalDate.of( 1900 , Month.JANUARY , 1 ) ; // Simply a year-month-day date, no problems, no issues, no confusion.
ld.toString (): 1900-01-01
Также обратите внимание, что java.time использует нормальную нумерацию, где 2018
означает 2018 год, а 1-12 означает январь-декабрь. Это резко отличается от проблемных классов наследства.
О java.time
Фреймворк java.time встроен в 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 .