Ну, жонглировать, как это, целыми числами, чтобы вычислить возраст, не способ сделать это.
Во-первых, использование Calendar
класса в наше время неправильно .Вам следует использовать новый Java Date and Time API (в пакете java.time
).* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * getYears
* * * * * * * * * * * * * * * * * * * * * * * *.Он использует тот факт, что когда мы, люди, говорим о нашем возрасте, мы вообще не округляем значение.Например, если мне завтра исполнится 30 лет, мне сегодня еще 29 лет.
Это должно сработать:
final LocalDate now = LocalDate.now();
datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
LocalDate birthDate = LocalDate.of(year, monthOfYear, dayOfMonth);
int age = Period.between(birthDate, now).getYears();
birth.setText(String.valueOf(age));
datePickerDialog.dismiss();
}
}, now.getYear(), now.getMonthValue(), now.getDayOfMonth());
Если вам нужноцелевые уровни API ниже 26, тогда вы можете использовать ThreeTen ABP , который поддерживает функциональность даты и времени Java 8.