Java 如何在DatePickerDialog android中根据拾取的日期计算年龄?

Java 如何在DatePickerDialog android中根据拾取的日期计算年龄?,java,android,Java,Android,我怎么能这样做 这是我的代码: private void setDateTimeField () { Calendar newCalendar = Calendar.getInstance(); mDatePickerDialog = new DatePickerDialog(AddBirthday.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker

我怎么能这样做

这是我的代码:

private void setDateTimeField () {
    Calendar newCalendar = Calendar.getInstance();
    mDatePickerDialog = new DatePickerDialog(AddBirthday.this, new OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            addBirthdayDate.setText(dateFormatter.format(newDate.getTime()));
            dateSelected = String.valueOf(dayOfMonth) + " /" + String.valueOf(monthOfYear + 1)
                    + " /" + String.valueOf(year);
        }
    }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
}

我现在想计算当用户在DatePickerDialog中选择日期并将其存储为整数类型时,用户的生日是什么时候

int age=getCurrentYear()-datePicker.getYear()

您可以尝试使用更简单的代码,例如:

    private int mDay;
    private int mMonth;
    private int mYear;
    private EditText date;
    private Calendar c = new Calendar();

    ...

    //and in your onCreate method:
    date = (EditText)findViewById(R.id.date_of_birth_as_text);

    date.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             showDialog(DATE_DIALOG_ID); //DATE_DIALOG_ID is the id of your DatePickerDialog - declared in your layout file

        }
    });

    //default values of the year, month and date - will be changed after click on the EditText view
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    updateDisplay();

    protected Dialog onCreateDialog(int id) {
        switch(id) {
            case DATE_DIALOG_ID:
            return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
        }
        return null;
     }

    private DatePickerDialog.OnDateSetListener mDateSetListener= new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
            // TODO Auto-generated method stub
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, monthOfYear);
            c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);

            updateDisplay();
        }
    };

private void updateDisplay() {
    Date currentDate = new Date();
    int age = currentDate.getYear() - mYear;
    date.setText( new StringBuilder().append("The user is ")
            .append(age).append(" years old"));
}

谢谢您的回复,但我需要根据DatePickerDialog中他选择的日期计算出一个人的年龄。例如,如果他选择1992年,我需要将其计算为23年,并将其存储为整数类型;int age=currentDate.getYear()-mYear*您也可以像这样获取当前年份日历。get(Calendar.year)-1900getYear()方法被删除。这就是为什么我写下您可以使用
Calendar.get(Calendar.year)-1900
而不是这将在几周内出现问题。今年最好不要硬编码。最好是编辑您的答案并获取当前年份。