根据出生年月日算出年龄

该代码定义了一个名为BirthToAgeUtils的工具类,用于计算从给定的生日日期到当前日期的年龄。它首先使用SimpleDateFormat解析输入的生日日期,然后获取当前日期,通过比较年、月、日来精确计算年龄,考虑到不同月份和同月不同日的情况。
摘要由CSDN通过智能技术生成

编写工具类,具体的实现方法和思路在代码里写好了。

public class BirthToAgeUtils {
    public static String getAge(String brithDay) {
        try {

            // 1 格式化传入的日期

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date oldTime = sdf.parse(brithDay);
            Calendar cd = Calendar.getInstance();

            // 2 获取当前时间的年月日

            int nowYear = cd.get(Calendar.YEAR);
            int nowMonth = cd.get(Calendar.MONTH);
            int nowDay = cd.get(Calendar.DAY_OF_MONTH);
            System.out.println(nowMonth);

            // 3 获取出生日期的年月日

            cd.setTime(oldTime);
            int oldYear = cd.get(Calendar.YEAR);
            int oldMonth = cd.get(Calendar.MONTH);
            int oldDay = cd.get(Calendar.DAY_OF_MONTH);
            System.out.println(oldMonth);

            // 4 通过年算出大概年龄

            int age = nowYear - oldYear;

            /*
             * 四种情况:
             *   第一种:旧月>新月,直接返回age-1
             *   第二种:旧月=新月,但旧日>新日,返回age-1
             *   第三种:旧月=新月,但旧日<=新日,返回age
             *   第四种:旧月<新月,返回age
             * */

            if (oldMonth > nowMonth || (oldMonth == nowMonth && oldDay > nowDay)) {
                return (age - 1) + "";
            } else {
                return age + "";
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值