java计算年龄_java根据出生年月日精确计算年龄的算法

本文介绍了如何使用Java根据出生年月日精确计算年龄的算法,包括一个公共静态方法getAge,该方法接受Date类型的出生日期参数,通过Calendar类计算当前年份与出生年份的差值,并考虑当年生日是否已过,确保计算结果准确。
摘要由CSDN通过智能技术生成

今天项目中有个根据出生年月日,需要精确计算年龄的算法,找了半天才算有个正确的,分享出来给牛牛们成为自己java代码库的一部分算法。public static int getAge(Date dateOfBirth) {

int age = 0;

Calendar born = Calendar.getInstance();

Calendar now = Calendar.getInstance();

if (dateOfBirth != null) {

now.setTime(new Date());

born.setTime(dateOfBirth);

if (born.after(now)) {

throw new IllegalArgumentException("年龄不能超过当前日期");

}

age = now.get(Calendar.YEAR) - born.get(Calendar.YEAR);

int nowDayOfYear = now.get(Calendar.DAY_OF_YEAR);

int bornDayOfYear = born.get(Calendar.DAY_OF_YEAR);

System.out.println("nowDayOfYear:" + nowDayOfYear + " bornDayOfYear:" + bornDayOfYear);

if (nowDayOfYear < bornDayOfYear) {

age -= 1;

}

}

return age;

}

public static void main(String[] args) throws Exception {

SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");

java.util.Date mydate = myFormatter.parse("2013-09-29");

System.out.println(getAge(mydate));

}

运行截图

5f44669d9023f819b9cfa4031178418d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值