年龄计算用户从日期选择器中选择DOB [英] Age Calculate when user select DOB from date picker

查看:402
本文介绍了年龄计算用户从日期选择器中选择DOB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  • 当用户从日期选择器中选择DOB时,我想计算年龄

  • 日期选择器代码与所有地方相同

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

我的日期格式:

1990/06/07(获取此格式)

1990/06/07 (getting this format)

我需要计算年龄,即当前日期 - DOB
2016-1990 = 26

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

代码:

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);
        }




  • 它给我0。这个问题

  • 推荐答案

    你可以使用 JodaTime 库,以获得有效的结果。

    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();
    

    并使用此方法获取差异

      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;
    
     }
    

    或根据您的要求,您可以更改 PeriodFormat 像这样

    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();
    

    这篇关于年龄计算用户从日期选择器中选择DOB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆