通过日期选择器输入时间并判断年龄(周岁)

今天的我特别的高产,已经写了三篇文章了,主要就是乘着空闲把最近遇到的问题都记录下来

老规矩,先上图

如果年龄小于0,则提示错误

xml文件就不贴了,很简单

实现这个功能主要用两个方法,一个是写一个计算周岁的方法,一开始把周岁想简单了,居然直接减年份去了,太愚钝了,,,

还有一个就是日期选择器

先看代码吧

//日期选择
    private void dialogDate() {
        tv_birthday_set.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new DatePickerDialog(IndividualActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthofYear, int dayOfMonth) {
                        //显示生日(月份要+1,因为这个方法是从0开始算的)
                        tv_birthday_set.setText(String.format("%d-%d-%d", year, monthofYear + 1, dayOfMonth));

                        Calendar cal = Calendar.getInstance();
                        String strDate = year + "-" + monthofYear + "-" + dayOfMonth;
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                        Date birthDay = null;
                        try {
                            birthDay = sdf.parse(strDate);
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        int birth = countAge(birthDay);
                        if (birth<0) {
                            Toast.makeText(getApplicationContext(), "生日输入有误", Toast.LENGTH_SHORT).show();
                            tv_age_set.setText("");
                        } else {
                            tv_age_set.setText(birth + "岁");
                        }

                    }
                    //设置初始的显示日期
                }, 2000, 0, 1).show();
            }
        });
    }

这个是比较简单的日期选择器,当点击生日的TextView的时候设置监听,调用日期选择器,将日期显示在TextView上,然后再调用周岁计算方法,通过获取选择的日期计算周岁并返回给年龄的TextView

下面看一下周岁计算方法

//根据生日计算年龄
    private int countAge(Date birthDay) {
        Calendar cal = Calendar.getInstance();

        if (cal.before(birthDay)) {
            throw new IllegalArgumentException(
                    "The birthDay is before Now.It's unbelievable!");
        }
        //获得当前日期
        int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH);
        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
        //获得出生日期
        cal.setTime(birthDay);
        int yearBirth = cal.get(Calendar.YEAR);
        int monthBirth = cal.get(Calendar.MONTH) + 1;
        int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);

        int age = yearNow - yearBirth;
            if (monthNow <= monthBirth) {
                if (monthNow == monthBirth) {
                    if (dayOfMonthNow < dayOfMonthBirth) age--;
                } else {
                    age--;
                }
            }
            return age;

        }

 然后直接调用一下dialogDate()的方法就行了

因为代码是截取的片段,所以方法的调用可能和我的源代码有点差别,如果有问题可以告诉我。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值