Age Calculate when user select DOB from date picker

℡╲_俬逩灬. 提交于 2019-12-25 20:05:05

问题


  • I want to calculate age , when user select DOB from date picker
  • Date picker code is same as everywhere

  • My date Format :

    1990/06/07 (getting this format)

  • I need to calculate age i.e current date - DOB 2016-1990 = 26

Code:

public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int yy = calendar.get(Calendar.YEAR);
            int mm = calendar.get(Calendar.MONTH);
            int dd = calendar.get(Calendar.DAY_OF_MONTH);

           int a = yy - calendar.get(Calendar.YEAR);
            Log.e("999999", String.valueOf(a));
            return new DatePickerDialog(getActivity(), this, yy, mm, dd);
        }
  • It is giving me 0 . thats the problem

回答1:


You can use JodaTime library for efficient results.

    String dateStr = "04/05/2010";

    SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy");
    Date dateObj = null;
    try {
        dateObj = curFormater.parse(dateStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }


    Period age = calcDiff(dateObj,new Date());
    Toast.makeText(this, PeriodFormat.wordBased().print(age),Toast.LENGTH_SHORT).show();

and Use this method for get difference

  private Period calcDiff(Date startDate,Date endDate)
  {
    DateTime START_DT = (startDate==null)?null:new DateTime(startDate);
    DateTime END_DT = (endDate==null)?null:new DateTime(endDate);

    Period period = new Period(START_DT, END_DT);

    return period;

 }

or as per your requirement you can change PeriodFormat like this

 PeriodFormatter mPeriodFormat;
 mPeriodFormat = new PeriodFormatterBuilder().appendYears().appendSuffix(" year(s) ").appendMonths().appendSuffix(" month(s) ").appendDays().appendSuffix(" day(s) ").printZeroNever().toFormatter();
 Toast.makeText(this,mPeriodFormat.print(age),Toast.LENGTH_SHORT).show();


来源:https://stackoverflow.com/questions/37460807/age-calculate-when-user-select-dob-from-date-picker

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!