根据生日计算年龄

根据生日计算年龄可以通过Calendar实现。最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天。所以还是老实判断年月日好了。
public   static   int  getAge(Date birthDay)  throws  Exception {
        Calendar cal 
=  Calendar.getInstance();

        
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  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);

        
int  age  =  yearNow  -  yearBirth;

        
if  (monthNow  <=  monthBirth) {
            
if  (monthNow  ==  monthBirth) {
                
// monthNow==monthBirth
                 if  (dayOfMonthNow  <  dayOfMonthBirth) {
                    age
-- ;
                } 
else  {
                    
// do nothing
                }
            } 
else  {
                
// monthNow>monthBirth
                age -- ;
            }
        } 
else  {
            
// monthNow<monthBirth
            
// donothing
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值