Java实现年龄计算

这篇具有很好参考价值的文章主要介绍了Java实现年龄计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、根据生日精确计算年龄

    public static int age(Date birthDate) {
        // 当前日历
        Calendar nowCalendar = Calendar.getInstance();
        // 生日大于当前日期
        if (nowCalendar.before(birthDate)) {
            throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
        }
        // 当前年月日
        int yearNow = nowCalendar.get(Calendar.YEAR);
        int monthNow = nowCalendar.get(Calendar.MONTH);
        int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
        // 出生日期年月日
        Calendar birthCalendar = Calendar.getInstance();
        birthCalendar.setTime(birthDate);
        int yearBirth = birthCalendar.get(Calendar.YEAR);
        int monthBirth = birthCalendar.get(Calendar.MONTH);
        int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
        // 粗计算年龄
        int age = yearNow - yearBirth;
        // 当前月份小于出生月份年龄减一
        if (monthNow < monthBirth) { age--; }
        // 当前月份等于出生月份,日小于生日年龄减一
        else if (monthNow == monthBirth && dayNow < dayBirth) { age--; }
        // 返回年龄值
        return age;
    }

二、年龄不足1周岁的月龄,以分数形式表示

   /**
     * 年龄不足1周岁的月龄,以分数形式表示,
     * 分数的整数部分为实足月龄,分数部分分母为30,
     * 分子为不足1个月的天数。
     * 如 3个月15天表达为:3 15/30
     *
     * @param birthDate 出生日期
     * @return 月龄值
     */
    public static String mothAge(Date birthDate) {
        Calendar nowCalendar = Calendar.getInstance();
        int monthNow = nowCalendar.get(Calendar.MONTH);
        int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);

        Calendar birthCalendar = Calendar.getInstance();
        birthCalendar.setTime(birthDate);
        int monthBirth = birthCalendar.get(Calendar.MONTH);
        int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
        int month = monthNow - monthBirth;
        month = month > 0 ? month : (12 + month);

        if (dayNow >= dayBirth) {
            return month + StringPools.SPACE + (dayNow - dayBirth) + "/30";
        }
        return month - 1 + StringPools.SPACE + (30 - dayBirth + dayNow) + "/30";
    }

三、根据出生日期-当前日期计算文章来源地址https://www.toymoban.com/news/detail-657843.html

   /**
     * 根据出生日期-当前日期计算,成人写整数即可;
     * 儿科的,一个月内写天数,
     * 半岁以内写几个月几天,
     * 半岁以上写几个月,
     * 一岁以上写几岁几个月,
     * 12岁以上用成人的写法
     *
     * @param birthDate 生日
     * @return 年龄
     * @author xiao.xl 2022/2/16 10:35
     */
    public static String getPatientAge(Date birthDate) {
        // 当前日历
        Calendar nowCalendar = Calendar.getInstance();
        // 生日大于当前日期
        if (nowCalendar.before(birthDate)) {
            throw new IllegalArgumentException("The birth date is before current time, it's unbelievable");
        }
        // 当前年月日
        int yearNow = nowCalendar.get(Calendar.YEAR);
        int monthNow = nowCalendar.get(Calendar.MONTH);
        int dayNow = nowCalendar.get(Calendar.DAY_OF_MONTH);
        // 出生日期年月日
        Calendar birthCalendar = Calendar.getInstance();
        birthCalendar.setTime(birthDate);
        int yearBirth = birthCalendar.get(Calendar.YEAR);
        int monthBirth = birthCalendar.get(Calendar.MONTH);
        int dayBirth = birthCalendar.get(Calendar.DAY_OF_MONTH);
        // 粗计算年龄
        int age = yearNow - yearBirth;
        // 当前月份小于出生月份年龄减一
        if (monthNow < monthBirth) { age--; }
        // 当前月份等于出生月份,日小于生日年龄减一
        else if (monthNow == monthBirth && dayNow < dayBirth) { age--; }
        // 粗计月
        int month;
        if (monthNow < monthBirth) {
            month = 12 + monthNow - monthBirth;
        } else {
            month = monthNow - monthBirth;
        }
        int day;
        if (dayNow < dayBirth) {
            day = 30 + dayNow - dayBirth;
            month = month - 1;
        } else {
            day = dayNow - dayBirth;
        }
        if (age >= 12) {
           return age + "岁";
        } else if (age >= 1) {
            return age + "岁 " + month + "月";
        } else if (month >= 6) {
            return month + "月";
        } else if (month >= 1) {
            return month + "月 " + day + "天";
        }
        return day + "天";
    }

到了这里,关于Java实现年龄计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包