2016-09-26 73 views
-3

我想從D.O.B計算年齡。我從下面的代碼中獲取出生日期。現在我想計算用戶年齡,我想在另一個textView中顯示年齡。我怎樣才能做到這一點?如何從D.O.B計算年齡?

dateFormatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.US); 

public void setDateTimeField() { 
     date(); 

     Calendar newCalendar = Calendar.getInstance(); 
     fromDatePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       txtDatePicker.setText(dateFormatter.format(newDate.getTime())); 
      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 

    } 

    public void date(){ 

     txtDatePicker.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       fromDatePickerDialog.show(); 
      } 
     }); 
    } 

回答

1

退房Joda,從而簡化了日期/時間計算(約達也是新標準的Java日期/時間API的基礎上,所以你可以學習即將成爲標準的API)。

Java 8有something very similar,值得一試。

例如

LocalDate birthdate = new LocalDate (1970, 1, 20); 
LocalDate now = new LocalDate(); 
Years age = Years.yearsBetween(birthdate, now); 

這是儘可能簡單,你可以想要的。

使用日期與Java 8偉大的例子:Java 8 Date Examples

編碼快樂!

+0

Android studio錯誤 - 無法解析符號'LocalDate'。 –

+0

你有沒有加joda lib? –

+0

雅現在它的工作正常,但如何在LocalDate中設置動態日期birthdate = new LocalDate(1970,1,20);我得到這個錯誤 - java.lang.IllegalArgumentException:yyyy,dd,mm –