2016-09-26 115 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 –