Никогда не используйте Calendar
. Это были годы go, вытесненные современными java .time классами, определенными в JSR 310.
Для значений даты без времени дня и без часового пояса используйте LocalDate
,
Не знаю Android. Но вы, кажется, получаете год, месяц и день в виде целых чисел от вашего сборщика. Сделай из них LocalDate
предметов.
LocalDate localDate = LocalDate.of( y , m , d ) ;
Рассчитать прошедшие дни.
long days = ChronoUnit.DAYS.between( start , end ) ;
О java .time
Фреймворк java .time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Чтобы узнать больше, см. Учебник Oracle . И поиск переполнения стека для многих примеров и объяснений. Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java .time классов.
Вы можете обмениваться java .time объектами непосредственно с вашей базой данных. Используйте драйвер JDB C , совместимый с JDB C 4.2 или более поздней версией. Нет необходимости в строках, нет необходимости в java.sql.*
классах. Поддержка Hibernate 5 и JPA 2.2 java .time .
Где взять java .time классы?
![Table of which java.time library to use with which version of Java or Android](https://i.stack.imgur.com/VyXKh.png)