java 生日 计算_java根据生日计算当前年龄,精确到月

public static String getAgeDetail(String date){

//如果有空格

int index = date.indexOf(" ");

if (index != -1){

date = date.substring(0 , index);

}

String[] data = date.split("-");

Calendar birthday =new GregorianCalendar(Integer.valueOf(data[0]), Integer.valueOf(data[1]), Integer.valueOf(data[2]));

Calendar now = Calendar.getInstance();

int day = now.get(Calendar.DAY_OF_MONTH) - birthday.get(Calendar.DAY_OF_MONTH);

//月份从0开始计算,所以需要+1

int month = now.get(Calendar.MONTH) +1 - birthday.get(Calendar.MONTH);

int year = now.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);

//按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。

if (day <0) {

month -=1;

now.add(Calendar.MONTH, -1);//得到上一个月,用来得到上个月的天数。

day = day + now.getActualMaximum(Calendar.DAY_OF_MONTH);

}

if (month <0) {

month = (month +12) %12;

year--;

}

StringBuffer tag =new StringBuffer();

if (year >0) {

tag.append(year +".");

}

if (month >0) {

tag.append(month);

}

if (year ==0 && month ==0 && day ==0) {

tag.append("今日出生");

}

return String.valueOf(tag);

}

3c20f732cf8c500bd1a9ac5437bf4a49.png

原文:https://www.cnblogs.com/xiao1993/p/11698550.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值