Go олл-ин в Joda-Time
String day = "11";
String month = "4";
String year = "2012";
String sDate = "" + year + '-' + month + '-' + day;
LocalDate dob = new LocalDate(sDate);
LocalDate today = new LocalDate();
if (dob.isBefore(today)) {
Period period = new Period(dob, today, PeriodType.yearMonthDay());
int years = period.getYears();
int months = period.getMonths();
int days = period.getDays();
System.out.println("" + years + " years " + months + " months " + days + " days");
}
Когда я только что запустил приведенный выше фрагмент, результат был:
7 лет 10 месяцев 0 дней
Поскольку вас интересуют годы, месяцы и дни, вам не нужны DateTime
объекты (хотя они будут работать). Они включают в себя время суток тоже. Просто используйте LocalDate
.
Классы SimpleDateFormat
и Date
плохо спроектированы и давно устарели, первые особенно печально неприятны. Я рекомендую вам держаться подальше от них, а также от представления момента времени как long
отсчета миллисекунд с начала эпохи. Хороший выбор:
- Оставайтесь с Joda-Time, поскольку вы уже используете Joda-Time.
- Мигрируйте до java .time, современных Java даты и времени API.