tl; dr
Так что мне использовать, календарь Android или Java-календарь?
Ни того, ни другого.
Используйте современные java.time классы.Доступно в бэк-порт для Android <26.</p>
LocalDate.of( 2018 , Month.JANUARY , 23 )
Избегайте устаревших классов
В Java ужасный класс java.util.Calendar
(и связанные с ним классы, Date
и т. Д.) Был вытеснен java.time несколько лет назад. классы.Теперь доступно в Android 26 и более поздних версиях.
Библиотека ThreeTen-Backport привносит обязательность функциональности java.time в Java 6 & 7 с использованием практически идентичного API.Этот проект дополнительно адаптирован для Android <26 в проекте <em>ThreeTenABP .
Я настоятельно рекомендую избегать устаревших классов, вместо этого используйте только классы java.time .Эти современные классы определены в JSR 310 и возглавляются тем же человеком, который возглавлял ведущую в отрасли библиотеку Joda-Time , Стивен Коулборн.Таким образом, они имеют отличный дизайн, основанный на многолетнем опыте.Использование ThreeTenABP стоит того, чтобы добавить библиотеку в ваш проект.
Только для даты, года-месяца-дня, без времени суток и без временизона, используйте класс LocalDate
.
LocalDate ld = LocalDate.of( 2018 , 1 , 23 ) ;
Или используйте удобное перечисление Month
для большей читабельности.
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;
О 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?