根据出生日期计算年龄

最近在写项目的时候遇到了一个需要根据出生日期计算年龄的问题,今天特意将代码记下来已被后期使用。

复制代码
 1   //根据出生日期计算年龄
 2     public  int getAgeByBirth(String birthDayStr) {
 3         SimpleDateFormat sdf =   new SimpleDateFormat( "yy-MM-dd" );
 4         Date birthDay= null;
 5         try {
 6             birthDay = sdf.parse(birthDayStr);
 7         } catch (ParseException e) {
 8             e.printStackTrace();
 9         }
10         // String str = sdf.format(parse( " 2005-06-09 00:00:00 " );
11 
12 
13         int age = 0;
14         Calendar cal = Calendar.getInstance();
15         if (cal.before(birthDay)) { //出生日期晚于当前时间,无法计算
16             throw new IllegalArgumentException(
17                     "The birthDay is before Now.It's unbelievable!");
18         }
19         int yearNow = cal.get(Calendar.YEAR);  //当前年份
20         int monthNow = cal.get(Calendar.MONTH);  //当前月份
21         int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //当前日期
22         cal.setTime(birthDay);
23         int yearBirth = cal.get(Calendar.YEAR);
24         int monthBirth = cal.get(Calendar.MONTH);
25         int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
26         age = yearNow - yearBirth;   //计算整岁数
27         if (monthNow <= monthBirth) {
28             if (monthNow == monthBirth) {
29                 if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前,年龄减一
30             } else {
31                 age--;//当前月份在生日之前,年龄减一
32             }
33         }
34         return age;
35     }
复制代码

在调用的时候注意:

//根据修改过的出生日期从新计算被保险人的年龄
tSaveLPInsuredSchema.setAge(String.valueOf(getAgeByBirth(mLPInsuredSchema.getBirthDay())));

posted on   ~码铃薯~  阅读(388)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示