public String getAge(String birthdayDate,String endDate){
String result = " 岁 月 日 小时";
if(BaseUtil.isEmpty(birthdayDate)||BaseUtil.isEmpty(endDate)){
return result;
}
try {
Date birthTime = DateUtil.stringToDate(birthdayDate, "yyyy-MM-dd HH:mm");
Date endTime = DateUtil.stringToDate(endDate, "yyyy-MM-dd HH:mm");
Calendar bc = Calendar.getInstance();
bc.setTime(birthTime);
Calendar dc = Calendar.getInstance();
dc.setTime(endTime );
int hour = dc.get(Calendar.HOUR_OF_DAY)-bc.get(Calendar.HOUR_OF_DAY);
int minute = dc.get(Calendar.MINUTE)-bc.get(Calendar.MINUTE);
int day = dc.get(Calendar.DAY_OF_MONTH) - bc.get(Calendar.DAY_OF_MONTH);
int month = dc.get(Calendar.MONTH) - bc.get(Calendar.MONTH);
int year = dc.get(Calendar.YEAR) - bc.get(Calendar.YEAR);
//按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。
if(minute<0){
hour--;
}
if(hour<0){
day --;
hour = 24+hour;
}
if(day<0){
month --;
dc.add(Calendar.MONTH, -1);//得到上一个月,用来得到上个月的天数。
day = day + dc.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if(month<0){
month = (month+12)%12;
year--;
}
StringBuffer buffer = new StringBuffer();
if(year>0){
buffer.append(year+"岁");
buffer.append(month+"月");
}else{
if(month>0){
buffer.append(month+"月");
}
}
buffer.append(day+"日");
buffer.append(hour+"小时");
return buffer.toString();
} catch (RuntimeException e) {
//e.printStackTrace();
}
return result;
}
分别获得两个时间的分、时、天、月、年。从分开始计算,不够则从上一个单位借。