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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM