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

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

老规矩,先上图

如果年龄小于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()的方法就行了

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

猜你喜欢

转载自blog.csdn.net/qq_40480758/article/details/84106797