java年龄api_Java日期时间API系列34-----Jdk8中java.time包中的新的日期时间API类应用,使用Period一行代码计算生日。...

通过Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别中得知,Period可以比较2个日期相差的年月日。年龄计算是2个日期相差的年的值,具体还要根据月日微调,如果小于生日年龄减1。下面使用Period可以非常方便的计算年龄。

1.使用Period一行代码计算生日

核心代码就是一行代码:

Period.between(birthDay, LocalDate.now()).getYears();

/*** 计算年龄

*@parambirthDay

*@returnint 年龄*/

public static intgetAge(LocalDate birthDay){

Objects.requireNonNull(birthDay,"birthDay");

Period period=Period.between(birthDay, LocalDate.now());if (period.getYears() < 0) {throw new DateTimeException("birthDay is before now!");

}else{returnperiod.getYears();

}

}/*** 计算年龄

*@parambirthDay

*@returnint 年龄*/

public static intgetAge(Date birthDay){returngetAge(DateTimeConverterUtil.toLocalDate(birthDay));

}/*** 计算年龄

*@parambirthDay

*@returnint 年龄*/

public static intgetAge(LocalDateTime birthDay){returngetAge(DateTimeConverterUtil.toLocalDate(birthDay));

}

测试代码:

/*** 年龄生日测试*/@Testpublic voidgetAgeBirthDayTest(){

Date date= DateTimeCalculatorUtil.getDate(2000, 6, 4);

System.out.println(DateTimeCalculatorUtil.getAge(date));

}

输出:

20

2.使用Java8以前的Calendar计算生日

public static int getAgeByBirth(Date birthDay) throwsParseException {int age = 0;

Calendar cal=Calendar.getInstance();if (cal.before(birthDay)) { //出生日期晚于当前时间,无法计算

throw newIllegalArgumentException("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);int dayOfMonthBirth =cal.get(Calendar.DAY_OF_MONTH);

age= yearNow - yearBirth; //计算整岁数

if (monthNow <=monthBirth) {if (monthNow ==monthBirth) {if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前,年龄减一

} else{

age--;//当前月份在生日之前,年龄减一

}

}returnage;

}

原地址:https://blog.csdn.net/sunnyljs/java/article/details/80934685

测试代码

@Testpublic void getAgeByBirthTest() throwsParseException{

Date date= DateTimeCalculatorUtil.getDate(2000, 6, 4);

System.out.println(getAgeByBirth(date));

}

输出

20

3.对比上面2种方法,Java8 时间api非常方便。

(1)Period线程安全。

(2)Period一行代码非常简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值