2015-11-10 2 views
0

Как я могу это сделать?Как рассчитать возраст на основе выбранной даты в DatePickerDialog android?

Это мой код:

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 и хранящий его в целочисленном типе.

ответ

1

Вы можете попробовать более простой код, как это, например:

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")); 
} 
+0

Благодарим вас за ответ, но мне нужен расчет для получения возраста персональной базы на дату, которую он выбрал в DatePickerDialog. Например, если он выбрал 1992 год, мне нужно рассчитать это до 23 лет и сохранить его в целочисленном типе. –

+0

взгляните на редактирование моего сообщения, то :) Вы можете рассчитать и распечатать его так: Date currentDate = new Date(); int age = currentDate.getYear() - mYear; ' –

+1

* Вы можете получить текущий год, подобный этому. Calendar.YEAR - 1900 –

-1

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

+0

Это будет багги в течение нескольких недель. Лучше не жестко закодировать текущий год. Было бы хорошо отредактировать ваш ответ и получить текущий год вместо этого. – dsh

Смежные вопросы