Java工具-根据出生年月日计算出年龄

我不写代码,我只是代码的搬运工

package com.example.demo.test.时间;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author Mr.wang
 * @version 2019年12月17日 上午9:33:40
 * 
 */
public class getAgeByBirthday {

    public static int getAgeByBirth(Date birthday) {
        // Calendar:日历
        /* 从Calendar对象中或得一个Date对象 */
        Calendar cal = Calendar.getInstance();
        /* 把出生日期放入Calendar类型的bir对象中,进行Calendar和Date类型进行转换 */
        Calendar bir = Calendar.getInstance();
        bir.setTime(birthday);
        /* 如果生日大于当前日期,则抛出异常:出生日期不能大于当前日期 */
        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 dayNow = cal.get(Calendar.DAY_OF_MONTH);
        /* 取出出生年月日 */
        int yearBirth = bir.get(Calendar.YEAR);
        int monthBirth = bir.get(Calendar.MONTH);
        int dayBirth = bir.get(Calendar.DAY_OF_MONTH);
        /* 大概年龄是当前年减去出生年 */
        int age = yearNow - yearBirth;
        /* 如果出当前月小与出生月,或者当前月等于出生月但是当前日小于出生日,那么年龄age就减一岁 */
        if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
            age--;
        }
        return age;
    }

    /* main方法测试 */
    public static void main(String[] args) {
        SimpleDateFormat sft = new SimpleDateFormat("yyyy-MM-dd");
        String sftBirth = "2018-4-25";
        Date date = null;
        try {
            date = sft.parse(sftBirth);
        } catch (Exception e) {
            e.printStackTrace();
        }
        int age = getAgeByBirthday.getAgeByBirth(date);
        System.out.print("年龄=" + age + "岁");
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值